[英]Fluent Nhibernate - Mapping hierarchy
我在項目中使用了nhibernate,並且有一張士兵表:
ID, FIRSTNAME, LASTNAME, COMMANDERID
所以每個擁有突擊隊的士兵也是一名士兵。
我有士兵課:
public class Soldier
{
public virtual int Id { get; set;}
public virtual Soldier Commander { get; set; }
public virtual IList<Soldier> Soldiers { get; set; }
}
我的問題是,如何映射“士兵”財產? 我嘗試了以下方法:
HasMany(x => x.Soldiers).KeyColumn("COMMANDERID");
但即時通訊得到一個例外。
您在這里擁有的是與類本身(而不是另一個類)的一對多關系。 因此,我相信您必須在“士兵”類的映射中同時指定“參考”和“ HasMany”。 因此,我認為士兵類的正確地圖應該是這樣的:
Table("Soldier");
Id(x => x.ID).GeneratedBy.Identity();
Map(x => x.FIRSTNAME);
Map(x => x.LASTNAME);
Reference(x => x.Commander).Column("COMMANDERID"); //Parent
HasMany(x => x.Soldiers).Cascade.All().Inverse().KeyColumn("COMMANDERID"); //Children
一旦我們討論同一個實體,就不太確定Inverse和Cascade將如何工作。 您可能需要對其進行測試。
這個其他問題也可以幫助您解決問題(非常相似的場景): 相同類別的Fluent / NHibernate集合
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.