2

我有一個表。那是s。 有兩類1. S和2 P子類使用相同的表在NHibernate中映射

板由S.繼承的類是:

public class S 
{ 
    public virtual decimal Id { get; set; }   
    public virtual IList<P> ChildPs { get; set; } 
} 

public class P : S 
{ 
    public virtual GType GType { get; set; } 
} 

internal class SMap : ClassMap<S> 
{ 
    public SMap() 
    { 
     Table("s"); 
     Id(x => x.Id).Column("A_S_ID"); 
     /* Set Parent_S_Id */ 
     HasMany<P>(x => x.ChildPs) 
      .KeyColumn("PARENT_A_S_ID") 
      .Cascade.All(); 
    } 
} 

internal class PMap : SubclassMap<P> 
{ 
    public PMap() 
    { 
     References(x => x.GType) 
      .Column("G_TYPE_ID") 
      .ForeignKey("G_TYPE_LU_ID"); 
    } 
} 

我創建了一個S實例和一些P添加ChildP。當我保存S實例時,它會給出錯誤P is not exist。任何人都有這個想法嗎?

請分享您的看法。

+0

您如何知道'structure'表中的行是'Structure'還是'Plate'類?他們之間有什麼區別? – mickfold 2013-04-25 19:25:50

+0

PARENT_ASSET_STRUCTURE_ID是一列。它用於保存板的Structure_id(父ID)。對於結構是NULL。 – 2013-04-26 06:45:05

+0

@jugal:你想要一個解決方案的子類而不使用鑑別​​器..... !! – Deepak 2013-04-29 12:39:06

回答

0

您的繼承映射設置是「每個子類的表」。這意味着你將爲不同的類使用不同的表格。 我不確定,但在我看來,你無法保存,因爲你只有一張桌子。 您可以在部分子類中找到其他信息here

+0

你也可以在[這裏]找到好帖子(http://www.codeproject.com/Articles/232034/Inheritance-mapping-strategies-in-Fluent-Nhibernat) – vk5880 2013-04-30 02:52:21