如何使用 nhibernate 和 LINQ 将多个联接(获取)添加到联接表?

发布于 2024-10-09 20:39:49 字数 999 浏览 2 评论 0原文

我有这些表/实体

VacationRequestDate表,其中有一个与VacationRequest表链接的VacationRequestId字段
VationationRequest 具有与 PersonPersonIdRequestStatusId 字段分别是strong>和RequestStatus

到目前为止我有这个查询:

IEnumerable<VacationRequestDate> dates = Session.Query<VacationRequestDate>().Fetch(r => r.VacationRequest).ThenFetch(p=>p.RequestStatus).ToList();

这工作正常并与 VacationRequest 连接,然后 VacationRequestRequestStatus 连接,但我不知道如何将额外的 EAGER 联接添加到 VationationRequest 表中。

如果我在末尾添加 Fetch ,它会引用 VacationRequestDate
如果我在末尾添加 ThenFetch ,它会引用 RequestStatus 表,

我找不到任何将 VacationRequest 表引用为参考点的 api。

如何使用 nhibernate LINQ 将多个联接添加到联接表?

i have these tables /entities

VacationRequestDate table which has a VacationRequestId field that links with VacationRequest table
VacationRequest has PersonId and RequestStatusId fields that links with Person and RequestStatus respectively.

i have this query so far:

IEnumerable<VacationRequestDate> dates = Session.Query<VacationRequestDate>().Fetch(r => r.VacationRequest).ThenFetch(p=>p.RequestStatus).ToList();

this works fine and joins with VacationRequest and then VacationRequest joins with RequestStatus but i can't figure out how to add an additional EAGER join to the VacationRequest table.

If i add a Fetch at the end, it refers to the VacationRequestDate table
If i add a ThenFetch at the end, it refers to the RequestStatus table

I can't find any api that will refer to the VacationRequest table as the reference point.

how would you add multiple joins to a joined table using nhibernate LINQ ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

旧街凉风 2024-10-16 20:39:49

虽然由于额外的连接而不是 100% 最佳,但这是可行的:

Session.Query<VacationRequestDate>()
       .Fetch(r => r.VacationRequest).ThenFetch(p => p.RequestStatus)
       .Fetch(r => r.VacationRequest).ThenFetch(p => p.Person)

其他查询方法(HQL、Criteria、不确定 QueryOver)没有此限制。

While not 100% optimal because of an additional join, this works:

Session.Query<VacationRequestDate>()
       .Fetch(r => r.VacationRequest).ThenFetch(p => p.RequestStatus)
       .Fetch(r => r.VacationRequest).ThenFetch(p => p.Person)

The other querying methods (HQL, Criteria, not sure about QueryOver) don't have this limitation.

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