簡體   English   中英

流利的Nhibernate-映射層次結構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM