通过子类结构在 nHibernate 表上使用 Linq 按类型查询
Posted
技术标签:
【中文标题】通过子类结构在 nHibernate 表上使用 Linq 按类型查询【英文标题】:Query by type using Linq on an nHibernate table by sub-class structure 【发布时间】:2010-08-19 08:48:28 【问题描述】:我有一个相当复杂的实体结构,其中几个类从一个基类继承,因此在 nhibernate 中选择一个表的每个子类结构。
基础项目
ProjectA : BaseProject
ProjectB : BaseProject
ProjectC : BaseProject
ProjectD : BaseProject
我想搜索其中一个条件将是 ProjectType。我试图避免为每个 ProjectType 编写单独的查询规范。
有人知道如何实现吗?它甚至是 Linq to nHibernate 可以做的事情吗,因为我认为它还没有完成。
我期待像 x => x.GetType() == typeof(ProjectTypeA)
这样的东西可以工作,但它没有。
【问题讨论】:
【参考方案1】:不幸的是,您所描述的方法是使用当前 Linq 提供程序执行此操作的唯一方法。您需要公开每个子类公开的使用 NHibernate 映射的属性(可能是枚举)。一个有用的技巧是将此属性映射到 update=false
以确保它永远不会更改。
您可以查看我对类似问题here 的回答了解更多详情。
【讨论】:
以上是关于通过子类结构在 nHibernate 表上使用 Linq 按类型查询的主要内容,如果未能解决你的问题,请参考以下文章
Fluent nHibernate - 如何在联结表上映射非键列?