我正在使用 NHibernate 开发一个 Web 应用程序。你能告诉我如何为以下 SQL 查询编写 NHibernate 查询吗:

SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position

它基本上是一个自动连接,但我不知道如何在 Nhibernate 中编写它。假设属性名称与表列名称相同。

有帮助吗?

解决方案

您可以只对原始实体执行选择,并使两个对象之间的关联为“lazy = false”。只要实体被映射,那么两者都会被返回,并且在尝试访问该对象时不会遇到延迟加载异常。

如果您不想映射“lazy=false”,那么您还可以迭代结果并执行某种操作(例如询问它是否为空;if(v1.AssociatedObject == null){}) 以确保在会话打开时加载数据。

更新:

我认为实际上有一个比 NHibernateUtil.Initialise() 更好的方法,它可以初始化一个集合,而无需遍历它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top