Nhibernate 关于延迟加载的问题

Nhibernate 关于延迟加载的问题,nhibernate,lazy-loading,Nhibernate,Lazy Loading,我正在使用nhibernate,我有一个问题 假设我有一个对象(ObjectA),它与另一个对象(ObjectB)有某种关系 现在我做一个查询,从TableA中返回结果,现在它在ObjectA中 如果我这样做了 int b = ObjectA.ObjectB.ColumnA; int b1 = ObjectA.ObjectB.ColumnA; int b2 = ObjectA.ObjectB.ColumnA; int b3 = ObjectA.ObjectB.ColumnA; int b4 =

我正在使用nhibernate,我有一个问题

假设我有一个对象(ObjectA),它与另一个对象(ObjectB)有某种关系

现在我做一个查询,从TableA中返回结果,现在它在ObjectA中

如果我这样做了

int b = ObjectA.ObjectB.ColumnA;
int b1 = ObjectA.ObjectB.ColumnA;
int b2 = ObjectA.ObjectB.ColumnA;
int b3 = ObjectA.ObjectB.ColumnA;
int b4 = ObjectA.ObjectB.ColumnA;
  int b1 = ObjectA.ObjectB.ColumnA;
  string b2 = ObjectA.ObjectB.ColumnB;
它会爆炸并引发一个问题,对吗?因为它正在进行延迟加载

如果我这样做会怎么样

int b = ObjectA.ObjectB.ColumnA;
int b1 = ObjectA.ObjectB.ColumnA;
int b2 = ObjectA.ObjectB.ColumnA;
int b3 = ObjectA.ObjectB.ColumnA;
int b4 = ObjectA.ObjectB.ColumnA;
  int b1 = ObjectA.ObjectB.ColumnA;
  string b2 = ObjectA.ObjectB.ColumnB;
这都是一个接一个的方法。你会去做5个查询还是只做一个

如果我这样做呢

int b = ObjectA.ObjectB.ColumnA;
int b1 = ObjectA.ObjectB.ColumnA;
int b2 = ObjectA.ObjectB.ColumnA;
int b3 = ObjectA.ObjectB.ColumnA;
int b4 = ObjectA.ObjectB.ColumnA;
  int b1 = ObjectA.ObjectB.ColumnA;
  string b2 = ObjectA.ObjectB.ColumnB;

这会引发两个查询还是一个查询?

所有这些方法只会导致一个调用,即加载ObjectB


在那之后,它在记忆中;为什么会再次转到数据库?

这还取决于为ColumnA和ColumnB为ObjectB提到的Nhibernate映射。如果它们恰好映射到一个单独的类/实体,且延迟加载设置为true,则在加载对象B时,不会加载ColumnA和ColumnB映射的实体。只有在访问它们时,Nhibernate才会加载它们