Koleksiyonum yüklenirken bir sorunum var. Kurduğum Kur, FluentNHibernate kullanılarak eşlenen basit bire çok ilişkidir. Varlık, istisna atılmış olsa da yüklenir, ancak ilgili koleksiyona erişim "yükleme toplama yasa dışı erişim" görüntüler. Kodun ilgili kısmını burada yapıştırırım. Ayrıca çizgi hariç tutarak ve .Not.LazyLoad()
arayarak, tembel yüklenmesini devre dışı denedimNHibernate collection loading, "yükleme koleksiyonuna yasa dışı erişim"
public DepartmentMap()
{
Id(x => x.Id);
Map(x => x.Name)
.Not.Nullable()
.Length(100);
HasMany(x => x.PressJobRun)
.AsBag()
.Inverse()
.Cascade.AllDeleteOrphan()
.LazyLoad()
.BatchSize(50);
...
}
şöyle
[Serializable]
[DataContract(IsReference = true)]
public partial class Department : Entity
{
...
[DataMember]
public virtual IList<PressJobRun> PressJobRun
{
get { return pressJobRunField; }
protected set { pressJobRunField = value; }
}
...
}
ancak aynı sona, eşleştirilmiş. Ben Oturumu açığa fark ettin
using (var tx = m_Repository.Session.BeginTransaction())
{
var depts = m_Repository.Session.CreateCriteria<Department>().List<Department>();
var dept = depts[0];
...
}
yapılacak şey değil, ama bu oturumun açık olduğundan emin olmak için girişimlerde oldu. Ben yığın izlemesi aşağıdaki bkz istisna detaya
:at NHibernate.Collection.AbstractPersistentCollection.Initialize(Boolean writing)
at NHibernate.Collection.AbstractPersistentCollection.Read()
at NHibernate.Collection.AbstractPersistentCollection.ReadSize()
at NHibernate.Collection.PersistentBag.get_Count()
at NHibernate.DebugHelpers.CollectionProxy`1.get_Items()
ilginç gremlin buraya gelir. PressJobRun
özelliğinin ayarlayıcı satırında kesme noktası belirledim. Bunun ve hızlı seyretmek pressJobRunField
üzerinde çıkarsam
- , ben "yükleme istisna-yasadışı erişim" bölümüne bakın.
value
değişkenini ilk hızlıca izlediğimde yüklü koleksiyonu görüyorum. Setter hattı üzerinden adım atma beklendiği gibi çalışır.
Ben
- Visual Studio 2012, hedefleme .NET 4
- NHibernate 3.3.1.400
- SQL CE 4
- Kale
- Kale AutoTx facitlity kullanmak ne
- Oturum p'yi yönetiyorum er WCF kendim
denedim ne
- o oturumun açık olduğunu ve kusurlu kod yürütülürken aynı oturum olduğundan emin yapılmış tembel yükleme
- devre dışı bırakma isteğinde
- toplanan
Inverted
koleksiyon haritası (tersine çevrilmesi gerektiğine inanıyorum) - temizlenmiş ve yeniden oluşturulmuş çözüm
- Yapılandırma Yöneticisi'nde, çözümdeki tüm projelerin
- tüm atılan istisnaları kırmak için hata ayıklayıcısını oluşturulduğundan emin olun.Debugger i