2010-10-08 113 views
1

此時我們將所有實體和映射保留在同一個程序集中。我們的實體派生自一個基本類實體,它是一個EntityWithTypedId流利的NHibernate針對不同基類型的不同約定

此外,我們有一個表名稱約定告訴複數表名稱。

現在我想創建其他兩種基本類型e.q. AggregateRootEntity和AggregateEntity都來自實體。 我想創建兩個基地實體兩組約定:

比方說: 對於從AggregateRootEntity表中派生的所有實體應以「ag_」爲前綴,並且增量生成的ID,但是對於所有實體派生從AggregateEntity表中應該以「a_」作爲前綴,並且應分配ID。

是否可以根據某些條件設置約定?

回答

1

您可以使用多個約定做,在他們的接受方法的一個特定類型的每個檢查

類似:

public class LegacyEntityTableConvention : IClassConvention, IClassConventionAcceptance 
{ 
    public void Accept(IAcceptanceCriteria<IClassInspector> criteria) 
    { 
    criteria.Expect(x => x.EntityType.IsAny(typeof(OldClass), typeof(AnotherOldClass))); 
    } 

    public void Apply(IClassInstance instance) 
    { 
    instance.Table("tbl_" + instance.EntityType.Name); 
    } 
} 

的代碼僅一個街區走出FNH維基 http://wiki.fluentnhibernate.org/Acceptance_criteria

相關問題