我对延迟加载有一些疑问
当我映射我的对象时,我在我的应用程序中的任何地方都写了.Not.LazyLoad()
并且它运行良好。但我有一些问题。
示例:我有一个班级User
。它具有属性Name
和Comments
。在Comments
中映射User
:
HasMany(x => x.Comments).KeyColumn("UserId").Not.LazyLoad();
哪种方法效果很好,但无论我在哪里加载User
,Comments
都会加载它,这很糟糕...加载示例User
:
var user = session.Get<User>(1);
如果用户有很多评论我的应用程序运行不好...
问题是如何在需要时启用LazyLoad?或者,如果我不写.Not.LazyLoad()
?
答案 0 :(得分:4)
我找到了问题的答案。
如果不写任何地方.Not.LazyLoad()
并且需要获取Comments
,则必须写这个(获取id = 1的用户):
var user = session.QueryOver<User>()
.Fetch(u => u.Comments)
.Eager
.List()
.Where(u => u.Id == userId)
.FirstOrDefault();
或者,你需要什么。