NHibernate派生基类

时间:2018-11-09 10:43:27

标签: c# inheritance nhibernate

我们有一个称为Order的NHibernate实体。该订单有一个头寸清单和一些其他东西。

我现在实现了一个名为OrderMin的新实体,它现在是Order的基类。我对OrderPosition所做的操作相同,现在有了一个名为OrderPositionMin

的基类。

当我尝试加载OrderMin-Collection时,出现奇怪的行为: 在集合中,现在有OrderMin和Order对象,这是我的代码:

===

当我查看集合时,包含的Order对象现在具有2个Lists Positions Lists。一种来自OrderPosition类型,另一种来自OrderPositionMin。

我尝试在Order Object中使用override关键字,但是由于所有属性必须都是虚拟的,所以这是不可能的。

有人知道这里出了什么问题吗?

预先感谢, 丹尼斯

1 个答案:

答案 0 :(得分:0)

这是NHibernate中的默认行为。您需要声明一个继承您的Order和OrderMin的基类。

public abstract class OrderBase
{
    // The properties that are needed by all derived types
}

public class OrderMin : OrderBase {}

public class Order : OrderBase {}

之后,您的查询结果应该看起来像您期望的那样。 如果您查询基类,则NHibernate将实现该基类的所有实体以及派生类型的所有实体。