NHibernate:如何在一对一映射上启用延迟加载

标签 nhibernate nhibernate-mapping

nhibernate 中的一对一关系可以“假”或“代理”延迟加载。我想知道是否有人知道一种方法来进行懒惰的一对一映射。

我通过使用映射到私有(private)字段的惰性集并让公共(public)属性返回该集的第一个结果,制定了一个技巧来实现相同的结果。它有效,但不是最干净的代码......

提前致谢!

最佳答案

除非关联是强制性的,否则不支持延迟加载一对一。见 here为推理。

归结为这样一个事实,即为了确定关系的另一方是否存在 (N)Hibernate 必须访问数据库。由于您已经对数据库进行了访问,因此您不妨加载完整的对象。

虽然在某些情况下访问数据库只是为了查看相关对象是否存在而不实际加载对象是有意义的(如果相关对象非常“重”),NHibernate 目前不支持它。

关于NHibernate:如何在一对一映射上启用延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/389026/

相关文章:

c# - Rhino mocks throws exception of "Callback arguments didn' t match the method arguments delegate"on the do 方法

c# - 我怎样才能让 NHibernate 给我它会为插入/更新生成的 SQL 而不是执行它?

nhibernate - 使用 Fluent NHibernate 和 NHibernate 3 将枚举映射为 Int

hibernate - 如何在hql中的两个日期之间动态搜索?

nhibernate - Fluent Nhibernate 在映射中放置了一个 where 子句

c# - 仅通过主键删除 NHibernate 中的实体

wcf - 3 层 nhibernate + wcf + Silverlight

NHibernate.PropertyValueException : not-null property references a null or transient

Nhibernate 有很多插入会生成额外的更新(无反向)

nhibernate - 删除多对多关系会导致删除和插入查询