0

我有以下实体

class BaseClass
{
  public int Id{get; set;}
}

class SubClassOne : BaseClass
{
  public string MyPropertyOne{get; set;}
}

class SubClassTwo : BaseClass
{
  public string MyPropertyTwo{get; set;}
}

现在我需要在一个网格中显示所有现有实体(SubClassOne 和 SubClassTwo 类型),包括分页。

问题是每个子类都有自己的属性,用户可以在这些属性上进行搜索,因此在查询中需要这些属性。

所以,据我所知,Future() 是没有选择的,因为分页不起作用。在纯 sql 中,我会用 UNION 构造一个大查询。据我所知,nhibernate 不直接与 UNION 一起使用。是否可以使用直接 sql 然后将结果转换为实体 SubClassOne 和 SubClassTwo?

4

1 回答 1

0

更新:

它应该与多态查询一起使用

var results = session.Query<BaseClass>()
    .Where(bc => ((SubClassOne)bc).MyPropertyOne == "Foo")
    .ToList();

// or
var results = session.QueryOver<BaseClass>()
    .Where(bc => ((SubClassOne)bc).MyPropertyOne == "Foo")
    .List();

注意:您最好按 id 排序以获得一致的页面

于 2012-09-19T12:36:15.280 回答