我正在使用nhibernate,我有一个问题。
假设我有一个与另一个对象(ObjectB)有某种关系的对象(ObjectA)。
ObjectA -> TableA
ObjectB -> TableB
现在我进行查询并从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;
这一切都在方法方法中一个接一个。你会去做5个查询还是只做一个?
如果我这样做怎么样
int b1 = ObjectA.ObjectB.ColumnA;
string b2 = ObjectA.ObjectB.ColumnB;
这会触发2个查询还是一个?
答案 0 :(得分:6)
所有这些方法只需一次调用即可加载ObjectB。
之后,它在记忆中;为什么会再次进入数据库呢?
答案 1 :(得分:1)
它还取决于ColumnA& amp;提到的Nhibernate映射。 ObjectB的ColumnB。如果它们恰好映射到延迟加载设置为true的单独的类/实体,那么当加载对象B时,ColumnA&未加载ColumnB映射实体。它们只有在被访问时才会被Nhibernate加载。