如何在运行时动态修改NHibernate加载查询?事件侦听器?拦截器?

时间:2010-03-17 16:43:14

标签: c# .net nhibernate

我需要修改用于在我的模型中加载多对一引用的查询。

它也需要与延迟加载的实体一起使用。

具体来说,我需要能够进一步过滤这些数据。不幸的是,NH不允许我使用内置过滤系统 (?) 来过滤多对一关系。我可能只是做错了。

是否有一个钩子,我可以手动和动态修改用于加载数据的查询?或者是允许我指定参数的过滤器的替代方法?

背景:

我正在使用一种使用修订控制形式的数据库,每个实体都有一个自然ID PK,一个EntityId,一个RevisionValidTo和RevisionValidFrom字段。可能有许多行使用相同的EntityId,这是其他表连接的引用,但Revision范围是互斥的。因此,该关系仅是应用滤波器的多对一IIF。但是,NH没有办法在多对一引用上指定过滤器(它们用于集合......)

1 个答案:

答案 0 :(得分:1)

在我得知我没有 懒惰加载我的孩子对象之前,我一直走在同样的道路上。在最初加载时,从存储库中填充实体可能值得节省。如果你不想每次都接受这个打击,你可以对你与存储库交互的任何内容稍微有点流畅

GetObject(entityId).Including(x => x.Revisions).Between(...)