【问题标题】:Fluent NHibernate / NHibernate Inheritance QuestionFluent NHibernate / NHibernate 继承问题
【发布时间】:2010-11-17 16:20:53
【问题描述】:

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

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 未映射。这是我应该使用子类鉴别器的地方吗?如果基础没有关联的表并且子类没有表定义之间不同的特定列,我想我没有看到正确的方法。

【问题讨论】:

    标签: nhibernate inheritance orm fluent-nhibernate mapping


    【解决方案1】:

    您必须使用三种可用的继承映射策略之一。根据您的描述,您应该考虑使用 table-per-concrete-class 映射,或更改您的数据库方案。

    您可以在此处找到有关策略优缺点的更多信息:https://www.hibernate.org/hib_docs/nhibernate/html/inheritance.html

    【讨论】:

    • 我将进一步研究每个具体的表映射。不幸的是,更改 db 方案将不起作用,因为有几个预先存在的系统依赖于当前的模式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多