2009-08-07 105 views
0

可能是一个愚蠢的问题,但我有许多实体都从基础实体继承。基本实体在数据库中没有表格。每个实体都有自己的表格,表格定义完全相同。代码的极简化示例如下。流利的NHibernate/NHibernate继承问题

public abstract class BaseEntity 
{ 
    public virtual string someProperty {get; set;} 
} 

public class Entity1 : BaseEntity{} 

public class Entity2 : BaseEntity{} 

public class CompletelyDifferentEntity 
{ 
    public virtual IList<BaseEntity> {get; set;} 
} 

我创建了实体的映射。在我的其他领域类中,如果我引用具体类一切正常,但如果我将其他类更改为引用BaseEntity,而我得到一个映射异常,因为BaseEntity未映射。这是我应该使用子类鉴别器的东西吗?我想我没有看到正确的方法来做到这一点,如果基地没有关联的表和子类没有一个特定的列在表定义之间不同。

回答

1

您必须使用三种可用的继承映射策略之一。从你的描述中,你应该考虑使用table-per-concrete-class映射,或者改变你的db方案。

您可以在这里找到更多关于策略利弊的信息:https://www.hibernate.org/hib_docs/nhibernate/html/inheritance.html

+0

我会更多地研究一下每个具体表的映射。不幸的是,改变数据库方案将不起作用,因为有几个预先存在的系统依赖于现有的模式。 – 2009-08-07 12:49:12