所有的,
使用nhibernate 5.x,asp.net 4.6.1
我有以下联系:
项目地址=>项目=>区域
我想查询项目地址,急切地加载项目和项目地区(以及项目所在国),…该项目是迫不及待地加载,但项目区域不是!当我在调试器中检查时,项目上的区域是代理类型。我试了各种各样的问题都没有成功:
var address = session.CreateCriteria<ProjectAddress>()
.Add(Expression.Eq(Projections.Id(), addressId))
.SetFetchMode("Project", NHibernate.FetchMode.Join)
.SetFetchMode("Project.Region", NHibernate.FetchMode.Join)
.SetFetchMode("Project.Country", NHibernate.FetchMode.Join)
.UniqueResult<ProjectAddress>();
和
var address = session.Session.Query<ProjectAddress>()
.Where(x => x.Id == addressId)
.Fetch(x => x.Project)
.ThenFetch(p => p.Region)
.ThenFetch(p => p.Country)
.Single();
我在其他查询中也做过这样的工作,为什么在这种情况下不工作超出了我的能力范围。这里的映射没有什么特别之处(project=>region)。我的映射:
[ManyToOne(Column = "region_id",
ClassType = typeof(Region),
NotNull = false)]
public virtual Region Region
{
get { return _region; }
set { _region = value; }
}