按子类结构在nHibernate表上使用Linq按类型查询

按子类结构在nHibernate表上使用Linq按类型查询,linq,nhibernate,linq-to-nhibernate,Linq,Nhibernate,Linq To Nhibernate,我有一个相当复杂的实体结构,其中几个类继承自一个基类,因此在nhibernate中为每个子类结构选择一个表 基本项目 ProjectA : BaseProject ProjectB : BaseProject ProjectC : BaseProject ProjectD : BaseProject 我想搜索其中一个条件是ProjectType的位置。我试图避免为每个项目类型编写单独的查询规范 有人知道这是如何实现的吗?这甚至是Linq to nHibernate可以做的,因为我认

我有一个相当复杂的实体结构,其中几个类继承自一个基类,因此在nhibernate中为每个子类结构选择一个表

基本项目

ProjectA : BaseProject  
ProjectB : BaseProject  
ProjectC : BaseProject  
ProjectD : BaseProject
我想搜索其中一个条件是ProjectType的位置。我试图避免为每个项目类型编写单独的查询规范

有人知道这是如何实现的吗?这甚至是Linq to nHibernate可以做的,因为我认为它还没有完成


我本来希望像
x=>x.GetType()==typeof(ProjectTypeA)
这样的东西可以工作,但它不起作用。

不幸的是,您描述的方法是使用当前的Linq提供程序实现这一点的唯一方法。您将需要公开一个由每个子类公开的NHibernate映射的属性(可能是枚举)。一个有用的技巧是将此属性映射为
update=false
,以确保它永远不会更改

你可以看到我对一个类似问题的回答,了解更多细节