nhibernate中的lazy="true"lazy="proxy"有什么区别?

最佳答案

我怀疑这是另一种思考方式。

class Foo
{
   public virtual Bar SingleBar { get; set; }
   public virtual ICollection<Bar> MultiBar { get; set; }
}
  • lazy =“proxy”适用于单个对象(即foo.SingleBar)
  • lazy =“true”适用于对象(即foo.MultiBar)的集合

  • (您不能将lazy =“proxy”设置为集合,也不能将lazy =“true”设置为单个引用。这两种方法都会导致NH抛出XmlSchemaException,这对于初学者来说有点神秘。)

    从操作上讲,它们执行相同的抽象操作:仅当访问该属性时,NHibernate才会命中数据库并填充该属性。

    但是,由于需要获取对象(在一种情况下,引用的ID(Bar)加载了父实体(Foo)),因此实现上会有细微的差别。在集合的情况下,ID是未知的,必须在另一个表中找到)

    关于nhibernate - nhibernate延迟加载选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1027019/

    10-12 19:11