Get<T>(object id)
有什么区别和 Load<T>(object id)
?文档几乎相同。另外,如果重要的话,在什么情况下我应该使用一个而不是另一个?
最佳答案
reference provided by Brian解释得很清楚。然而,主 区别在于Load
不会访问数据库来检查和加载您需要的实体,因为它假定您知道该实体存在。 Load
返回的对象是某种代理,可以在需要时延迟获取真实数据,或者在未找到实体时抛出异常。
回顾:
Load
当您确定存在具有特定 ID 的实体时应使用。该调用不会导致数据库命中(因此在某些情况下可以由 NHibernate 优化掉)。如果实体实例不存在于数据库中,请注意访问对象时可能引发的异常。 Get
命中数据库或 session 缓存以检索实体数据。如果实体存在则返回,否则返回 null
将被退回。这是确定具有特定 ID 的实体是否存在的最安全方法。如果您不确定要使用什么,请使用 Get
. 关于nhibernate - Get<T> 和 Load<T> 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2125668/