编程语言
首页 > 编程语言> > C#-流利的NHibernate和延迟加载

C#-流利的NHibernate和延迟加载

作者:互联网

我有一些关于延迟加载的问题

映射对象后,我会在应用程序中的所有位置编写.Not.LazyLoad(),并且效果很好.但是我有一些问题.
示例:我有一个User类.它具有属性名称和注释.在用户中映射评论:

HasMany(x => x.Comments).KeyColumn("UserId").Not.LazyLoad();

效果很好,但是在我加载用户的任何地方,评论都会被加载,这很糟糕…加载用户的示例:

var user = session.Get<User>(1);

如果用户有很多评论,我的应用程序将无法正常工作…
问题是如何在需要时启用LazyLoad?或者,如果我不编写.Not.LazyLoad(),如何禁用延迟加载?

解决方法:

我找到了我问题的答案.
如果不在任何地方编写.Not.LazyLoad()并需要获取注释,则必须编写此代码(获取id = 1的用户):

var user = session.QueryOver<User>()
                  .Fetch(u => u.Comments)
                  .Eager
                  .List()
                  .Where(u => u.Id == userId)
                  .FirstOrDefault();

或者,您需要什么.

标签:lazy-loading,session,c,net,fluent-nhibernate
来源: https://codeday.me/bug/20191101/1982415.html