字段值,我得到这个例外无法获得通过反射吸... NHibernate的查询缓存与二级缓存
不能被 DictionaryMaster的 反射的getter得到一个字段的值。
k__BackingField
与此内部异常:
字段 '<> k__BackingField' 上 类型定义不是目标 对象,它是类型的 'System.Object的[]' 上的场。
只有当我在查询中使用eagerloading时,问题才存在。下面我把我的课程,关系和查询。
public class DictionaryMaster
{
public virtual IList<DictionaryItem> DictionaryItems { get; private set; }
public virtual System.String Code { get; private set; }
public virtual System.String Description { get; private set; }
}
public class DictionaryMasterMap : ClassMap<DictionaryMaster>
{
public DictionaryMasterMap()
{
Cache.ReadOnly().Region("dictionary");
LazyLoad();
Id(x => x.Code) //i know this is so ugly
.Column("DC_Code")
.GeneratedBy.Assigned();
Map(x => x.Description).Column("DC_Desc");
HasMany(x => x.DictionaryItems)
.Cascade.AllDeleteOrphan()
.Fetch.Select()
.AsBag()
.Inverse()
.Not.LazyLoad()
.KeyColumns.Add("DI_DCCode");
}
}
public class DictionaryItem
{
public virtual int Id { get; private set; }
public virtual string Code { get; private set; }
public virtual DictionaryMaster DictionaryMaster { get; private set; }
public virtual string Description { get; private set; }
}
public class DictionaryItemMap : ClassMap<DictionaryItem>
{
public DictionaryItemMap()
{
Cache.ReadOnly().Region("dictionary");
Id(x => x.Id)
.Column("DI_Id").GeneratedBy.Identity();
Map(x => x.Code).Column("DI_Code");
Map(x => x.Description).Column("DI_Desc");
References(x => x.DictionaryMaster).Column("DI_DCCode");
}
}
查询:
session.Query<DictionaryMaster>()
.Fetch(x => x.DictionaryItems)
.Cacheable()
.CacheMode(CacheMode.Normal)
.ToList();
任何解决方案了吗? – 2014-11-22 19:50:25
应该在nHibernate 3.2.0中修复 – 2014-11-22 22:47:08