问题描述
Get<T>(object id)
和Load<T>(object id)
有什么区别?该文档的内容大致相同.另外,如果有关系,在什么情况下我应该使用另一种方法?
What's the difference between Get<T>(object id)
and Load<T>(object id)
? The documentation pretty much reads the same. Also, if it matters, in what cases should I use one over the other?
推荐答案
The reference provided by Brian explains it quite clearly. However, the main difference is that Load
doesn't hit the database to check and load the entity you require, since it assumes you know the entity exists. The object returned by Load
is some kind of proxy that lazily fetches the real data when required or throws an exception if the entity is not found.
回顾:
- 当您确定知道存在具有特定ID的实体时,应使用
-
Load
.该调用不会导致数据库命中(因此在某些情况下,NHibernate可以对其进行优化).注意如果数据库中不存在实体实例,则在访问对象时可能会引发异常.
Load
should be used when you know for sure that an entity with a certain ID exists. The call does not result in a database hit (and thus can be optimized away by NHibernate in certain cases). Beware of the exception that may be raised when the object is accessed if the entity instance doesn't exist in the DB.
Get
命中数据库或会话高速缓存以检索实体数据.如果该实体存在,则返回它,否则将返回null
.这是确定是否存在具有特定ID的实体的最安全方法.如果不确定使用什么,请使用Get
.
Get
hits the database or session cache to retrieve the entity data. If the entity exists it is returned, otherwise null
will be returned. This is the safest way to determine whether an entity with a certain ID exists or not. If you're not sure what to use, use Get
.
这篇关于Get< T>之间的差异负载< T>的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!