FluentNhibernate-带有ReferencesAny的查询

FluentNhibernate-带有ReferencesAny的查询,nhibernate,fluent-nhibernate,linq-to-nhibernate,Nhibernate,Fluent Nhibernate,Linq To Nhibernate,使用ReferencesAny时,存在应用程序不可见的.EntityTypeColumn(“MyType”)。 是否有使用HQL或其他方法按该列进行查询的选项,以及如何集成到我的LINQ到HQL查询中?如何简单地将该列映射到您引用的实体中。对所有类型都有一个基类,例如?像往常一样,NHibernate对(几乎)一切都有解决方案 让我们假设这样的映射(): 这将生成WHERE。。。MyType='联系人' 查询版本中的内容相同: var query = session.QueryOver<M

使用ReferencesAny时,存在应用程序不可见的.EntityTypeColumn(“MyType”)。
是否有使用HQL或其他方法按该列进行查询的选项,以及如何集成到我的LINQ到HQL查询中?

如何简单地将该列映射到您引用的实体中。对所有类型都有一个基类,例如?

像往常一样,NHibernate对(几乎)一切都有解决方案

让我们假设这样的映射():

这将生成WHERE。。。MyType='联系人'

查询版本中的内容相同:

var query = session.QueryOver<MyEntity>()
     .Where(x => x.AnyEntity is Contact)
     .List<MyEntity>();

不知道你怎么想。你能加些样品吗。我的意思是,如果你想访问该列,你只需要在实体中添加一个属性,该属性被引用,并将该列映射到该属性……啊,是的……明白了。然而,是否还有一种方法可以通过HQL实现这一点,并将LINQ集成到HQL?据我所知,HQL或NH中的所有其他查询类型仅支持您映射的实体。表示否。在本例中,是否有方法使用映射为“TheId”的EntityIdentifierColumn进行过滤?比如。在哪里(列表中的TheId))?我已经扩展了答案。是的,这是可能的。我们需要神奇的“id”选择器;)
// the 'Contact' represents the value contained in DB...
var hql = "from MyEntity where AnyEntity.class = 'Contact' "; 
...
session.CreateQuery(hql)
        .List<MyEntity>();
var query = session.QueryOver<MyEntity>()
     .Where(x => x.AnyEntity is Contact)
     .List<MyEntity>();
query
  ...
  .Where(Restrictions.In("AnyEntity.id", new[] {1, 2, 3, 4, 5, 6, 7, 8}))
  ...