【发布时间】:2018-11-16 09:26:28
【问题描述】:
全部,
使用 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; }
}
【问题讨论】:
标签: asp.net nhibernate nhibernate-criteria