如何使 nhibernate 不合并继承对象的结果?

How to make nhibernate not combine results from inherited objects?

我对 nhibernate 查询有疑问。 我得到的结果是两个 table 的混合。 我如何告诉 nhibernate 不要合并来自不同 tables.

的结果

这是我的查询:

using (var session = SessionFactory.OpenSession())
{
   using (var transaction = session.BeginTransaction())
   {
      timeEntryReportIds = session.Query<XXXX>()
                .Where(x => x.SentToServiceLeader == true && x.StartDate < cutoffDate)
                .Select(x => x.Id)
                .ToList();
      transaction.Commit();
   }
}

我的 XXXX class 映射如下所示:

public class XXXXMapping : ClassMapping<XXXXEntity>
{
    public XXXXMapping()
    {
        Table("XXXX");
        Property(x => x.X1, c => c.Type<UtcDateTimeType>());
        Property(x => x.X2, c => c.Type<UtcDateTimeType>());
        Property(x => x.X3, c => c.Index("IX_X3"));
        Property(x => x.X4, c => c.Index("IX_X4"));
        Property(x => x.X5);
        Property(x => x.X6);
    }
}

我还有一个看起来像这样的:

public class YYYYYMapping : ClassMapping<YYYYYEntity>
...

我的 classes 是这样定义的:

public class XXXXEntity : MwlEntityBase
...

public class YYYYEntity : XXXXEntity
...

我遇到的问题是,当我 运行 我的查询时,我从 XXXX 和 YYYYY table 得到结果。 我如何告诉 nhibernate 不要那样做!

我来这里之前做了一些研究,它告诉我我需要扩展基础class,但我无法控制 [MwlEntityBase] class。其他 classes 我可以控制。 我试图将 Classmapping 继承从 ClassMapping 更改为 UnionSubclassMapping 和 JoinedSubclassMapping。但是当开始我们说缺少的根元素或类似的东西时它失败了。我以为这是因为我无法更改 MwlEntityBase class? 也可能是我做错了。

无论如何,我需要帮助以正确的方式解决这个问题。我什至可以接受一个不正确的方法来解决这个问题,它有效:)

简答,不要继承自XXXX^^ 只需创建一个抽象基 class 并从该基 class.

派生 XXXX 和 YYYY
public abstract class BaseEntity : MwlEntityBase
{
    // The common properties for XXXX and YYYY.
}

public class XXXX : BaseEntity {}

public class YYYY : BaseEntity {}