插入Nhibernate子类

时间:2011-11-23 15:53:32

标签: nhibernate fluent-nhibernate fluent-nhibernate-mapping

我们有两个模式,一个数据库,我们只能更改一个模式。

我们这样做的原因是我们有一对一的映射,即我们需要在Club表中添加额外的字段。所以我们已经从我们无法改变的模式中创建了一个表。

我们只想插入子表,因为基表已经存在一条记录,但是我们需要在我们的表中进行名为OurClub的初始插入

我们需要具有系统中其他数据链接的父表TheyClub,通过使用它我们不需要重新映射已经预先映射过的实体。

public class OurClub : TheirClub
{
    public virtual int ClubId { get; set; }
    public virtual int ClubName { get; set; }

}

public class TheirClub //The schema we cant change
{
    public virtual int ClubId { get; set; }
    public virtual List<string> Contacts { get; set; }

}

每当试图插入OurClub时,它也会尝试插入他们的俱乐部。我们不想要这种行为。

对此有何建议?

1 个答案:

答案 0 :(得分:0)

public class OurClub
{
    public virtual int Id { get; set; }
    public virtual TheirClub OldClub { get; set; }
    // Additional Properties here

    // Use Properties like this to have the same References as TheirClub
    public virtual OtherEntity Other
    {
       get { return OldClub.Other; }
       set { OldClub.Other = value; }
    }
}

public class OurClubMap : ClassMap<OurClub>
{
    public OurClubMap()
    {
        Id(x => x.Id).GeneratedBy.Foreign("OldClub"); // inherits the id of the original
        // or
        Id(x => x.Id).GeneratedBy.HiLow("100");  // has its own id

        References(x => x.OldClub);
    }
}