2012-03-28 67 views
0

我們使用Fluent NH與基於約定的映射。我有以下幾點:如何用Fluent NHibernate映射兩個相同類型的組件AutoMap約定

public class Foo() : Entity 
{ 
    public BarComponent PrimaryBar { get; set; } 
    public BarComponent SecondaryBar { get; set; } 
} 

public class BarComponent 
{ 
    public string Name { get; set; } 
} 

我已經到了它將創建具有單個名稱字段的foo表的地步。我試過下面的覆蓋,它不起作用。

public class FooOverride : IAutoMappingOverride<Foo> 
    { 
     public void Override(AutoMapping<Foo> mapping) 
     { 
      mapping.Component(x => x.PrimaryBar).ColumnPrefix("primary"); 
      mapping.Component(x => x.SecondaryBar).ColumnPrefix("secondary"); 
     } 
    } 

我真的需要做一個完整的覆蓋映射,或者我可以在這裏做些什麼工作嗎?

回答

0

我最終得到了我在問題工作中描述的方式。原來我們的AutoMappingConfiguration是從DefaultAutomappingConfiguration繼承的問題。我們沒有正確識別組件。

+0

這不是一個答案。答案應該包含更多細節。 – dariol 2014-08-07 19:14:58

0

幾年前,當我開始使用FNH時,我遇到了這個問題。這是我見過的FNH Automapping不能「正常工作」的少數場景之一。

認爲當時向我建議的方法,我已經(然而,隨着實體,而不是組件)成功地使用是創建空的,中間實體,並在子類中引用它們。

就你而言,你可以創建兩個新的,從BarComponent繼承的空類(比如PrimaryBarComponent和SecondaryBarComponent)。

然後,在你的Foo類,聲明爲:

public PrimaryBarComponent PrimaryBar { get; set; } 
public SecondaryBarComponent SecondaryBar { get; set; } 

這是一個克魯格,在我看來,但它正常工作與實體和實體名單,並且不需要任何替代或約定。

我從來沒有使用FNH的部件,所以我不知道有類似的方法將工作,但它可能是值得研究。

相關問題