可能是一个愚蠢的问题,但我有许多实体都从一个基础实体继承。基本实体在数据库中没有表。每个实体都有自己的表,表定义完全相同。下面是极其简化的代码示例。
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。这是我应该使用子类鉴别器的东西吗?如果基础没有关联的表,并且子类没有表定义之间不同的特定列,我想我没有看到正确的方法。
答案 0 :(得分:1)
您必须使用三种可用的继承映射策略之一。根据您的描述,您应该考虑使用table-per-concrete-class映射,或者更改db方案。
您可以在此处找到有关策略优缺点的更多信息:https://www.hibernate.org/hib_docs/nhibernate/html/inheritance.html。