use*_*833 6 c# nhibernate eager-loading
我试图在多个表上使用标准Api和急切加载.
我的精简实体看起来像这样:
class Limit
{
Risk {get; set;}
}
class Risk
{
List<Company> Companies { get;set;}
}
class Company
{
List<Address> OldAdresses {get;set;}
}
class Address
{
string Street { get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我的Criteria调用如下所示:
var CriterionGruppe = Expression.Eq("Account.Id", someGuid);
var temp = _transaktion.Session.CreateCriteria(typeof(Limit))
.SetFetchMode("Risk", FetchMode.Eager)
.SetFetchMode("Risk.Companies", FetchMode.Eager)
.Add(CriterionGruppe)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.List<Limit>();
Run Code Online (Sandbox Code Playgroud)
地址仍然加载了许多选择.如何在我的标准电话中包含公司的旧地址.
我已经在ayende的博客中阅读了博客文章,并在stackoverflow上阅读了其他几个问题.但仍然没有运气.
我希望有人能指出我正确的方向.
在此先感谢彼得
var account = _transaktion.Session.Load<Account>(someGuid);
var temp = _transaktion.Session.CreateCriteria(typeof(Limit))
.SetFetchMode("Risk", FetchMode.Eager)
.SetFetchMode("Risk.Companies", FetchMode.Eager)
.SetFetchMode("Company.OldAddresses", FetchMode.Eager)
.Add(Expression.Eq("Account", account))
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.List<Limit>();
Run Code Online (Sandbox Code Playgroud)
然而,这是非常低效的.您正在加载大量重复数据以进行1 sql查询.一个更好的方法是
| 归档时间: |
|
| 查看次数: |
4859 次 |
| 最近记录: |