Nhibernate:Don';访问子对象主键时无法获取

Nhibernate:Don';访问子对象主键时无法获取,nhibernate,fetch,Nhibernate,Fetch,在NHibernate中有没有一种方法可以在不获取子对象的情况下获取子对象的外键 例如 我有User和UserRole。我是否可以访问User.UserRole.UserRoleId而不会再次点击数据库以检索UserRole 我意识到我可以将fetch mode设置为eager,这将阻止它再次访问数据库,但理论上不需要这样做,因为用户表中有userroldo 提前感谢。也许您可以向用户对象添加另一个字段UserRoleId?听起来有点脏,在更改用户角色时,您需要将其连接起来保持同步。此字段是否映

在NHibernate中有没有一种方法可以在不获取子对象的情况下获取子对象的外键

例如

我有User和UserRole。我是否可以访问User.UserRole.UserRoleId而不会再次点击数据库以检索UserRole

我意识到我可以将fetch mode设置为eager,这将阻止它再次访问数据库,但理论上不需要这样做,因为用户表中有userroldo


提前感谢。

也许您可以向用户对象添加另一个字段UserRoleId?听起来有点脏,在更改用户角色时,您需要将其连接起来保持同步。

此字段是否映射为非惰性


听起来你想要延迟加载。当多对一映射为lazy时,将创建一个只填充id字段的代理。一旦访问id之外的任何属性,它将从db加载

我考虑过这一点,但我认为丑陋超过了性能提升。我会将fetch模式设置为eager,而不是这样做。你可以通过一个投影查询来实现这一点,但它会变得很混乱。没有急切地抓取那么干净。你说得对。啊,我以为它是这样工作的,但后来发现不是这样的,然而我把我的测试搞砸了。谢谢