字段值,我得到這個例外無法獲得通過反射吸... 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