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

时间:2010-08-19 08:48:28

标签: linq nhibernate linq-to-nhibernate

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

BaseProject

ProjectA : BaseProject  
ProjectB : BaseProject  
ProjectC : BaseProject  
ProjectD : BaseProject

我想搜索其中一个条件是ProjectType的位置。我正在努力避免为每个ProjectType编写单独的查询规范。

有谁知道如何实现这一目标?它甚至是Linq对nHibernate可以做的事情,因为我认为它尚未完成。

我期待像x => x.GetType() == typeof(ProjectTypeA)这样的东西可以工作,但事实并非如此。

1 个答案:

答案 0 :(得分:1)

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

您可以查看我对类似问题here的回答,了解更多详情。