nhibernate - Get<T> 和 Load<T> 的区别

标签 nhibernate

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/

    相关文章:

    c# - NHibernate 别名中的错误

    c# - nhibernate 一对一映射和非空 ="false"?

    sql-server - 带有加密触发器的 TooManyRowsAffectedException

    nhibernate - NHibernate 3.1 坏了吗?

    nhibernate - NHibernate Mapping-by-Code 的每个子类继承映射表

    linq - NHibernate 3 - 扩展 Linq 提供者 BaseHqlGeneratorForMethod.BuildHql 问题

    nhibernate - 加入嵌套查询 NHibernate

    c# - NHibernate Evict By Type 而不是实例

    database - 是否可以使用 NHibernate 创建数据库?

    c# - 我可以在Where()中使用FirstOrDefault()或First()吗