【问题标题】:NHibernate derived base classNHibernate 派生基类
【发布时间】:2018-11-09 10:43:27
【问题描述】:

我们有一个名为 Order 的 NHibernate 实体。该命令有一个职位列表和其他一些东西。

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

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

    var mins = Session.QueryOver<OrderMin>()
                    .Where(x => RestrictionExtensions.IsIn(x.Id,
                        list))
                    .List();

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

我尝试在 Order 对象中使用 override 关键字,但这不可能,因为所有属性都必须是虚拟的。

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

提前致谢, 丹尼斯

【问题讨论】:

    标签: c# inheritance nhibernate


    【解决方案1】:

    这是 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 将实现基类的所有实体和派生类型的所有实体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多