当HBM中定义lazy=false时,如何使用setFetchMode(Lazy)运行Nhibernate ICriteria查询?

发布于 2024-09-25 13:45:30 字数 611 浏览 8 评论 0原文

我想运行具有惰性多对一关联的条件查询。这些关联在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最好是你 2024-10-02 13:45:30

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文