当HBM中定义lazy=false时,如何使用setFetchMode(Lazy)运行Nhibernate ICriteria查询?
我想运行具有惰性多对一关联的条件查询。这些关联在 HBM 中设置为 lazy="false"
。这是因为我们90%的项目都急切地使用它。
但有一些“大”查询应该作为 lazy="proxy"
运行。
HBM:
<many-to-one name="DestinationElement" class="X" column="DstElemId" not-null="true" unique="false" cascade="save-update" outer-join="auto" fetch="select" lazy="false" index="IDX_Ass_DestElem">
标准设置:
criteria.SetFetchMode("DestinationElement", FetchMode.Lazy);
它的工作方式相反,但不是这样。它急切地获取。
LOC 超过 20K,如果以相反的方式进行重构,将是一次巨大的重构。
我怎样才能强制它只在我想要的时候延迟获取,而在其他时候都急切地获取?
提前致谢!
I'd like to run a criteria query with lazy many-to-one associations. Those associations are set as lazy="false"
in the HBM. It's because we use it eagerly 90% of the project.
But there are a few 'big' queries that should run as lazy="proxy"
.
HBM:
<many-to-one name="DestinationElement" class="X" column="DstElemId" not-null="true" unique="false" cascade="save-update" outer-join="auto" fetch="select" lazy="false" index="IDX_Ass_DestElem">
Criteria setup:
criteria.SetFetchMode("DestinationElement", FetchMode.Lazy);
It works the opposite way, but not this way. It fetches eagerly.
The LOC is 20K+, and it'd be a massive refactor to do it the opposite way.
How can I force this to fetch lazily only when I want, and fetch eagerly all other times?
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
HBM 中的
lazy="false"
不能在查询中被覆盖(除了 99% 的情况下这是一个坏主意),您必须更改代码。
lazy="false"
in the HBM cannot be overriden in a query (besides being a bad idea 99% of the time)You'll have to change your code.