2010-12-09 60 views
1

这是我的设置:功能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

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

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

回答

1

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

您可能想要一对一。

+0

我认为可能是这种情况。谢谢你的确认。 – 2010-12-09 22:29:56