每个子类保存流利的NHibernate表

时间:2010-12-09 18:54:37

标签: c# .net nhibernate inheritance fluent-nhibernate

这是我的设置:

public class Parent
{
    public virtual int Id { get; protected set; }
    public virtual Property1 { get; set; }
}

public class Child : Parent
{
    public virtual Property2 { get; set; }
}

public sealed class ParentMap : ClassMap<Parent>
{
    public ParentMap()
    {
        Id( m => m.Id );
        Map( m => m.Property1 );
    }
}

public sealed class ChildMap : SubclassMap<Child>
{
    public ChildMap()
    {
        KeyColumn( "ParentId" );
        Map( m => m.Property2 );
    }
}

这非常适合检索数据。我怎么去保存这个呢?我想在附加到父级的数据库中创建一个新的子记录。如果我创建一个具有相同父值并保存的新子类,则会收到错误a different object with the same identifier value was already associated with the session: 2, of entity: Child

我想这是有道理的,但是如何创建一个在数据库中具有相同父级的新Child?

也许这是不可能的,我应该从父母到孩子做一对一。

1 个答案:

答案 0 :(得分:1)

你滥用继承权。您无法更改对象的类型。

你可能想要一对一。