Bazı girdiler kullanabileceğim NHibernate ile ilgili bir sorunla uğraşıyorum.Nesnenin bir alt kümesinin tamamı yerine nasıl devam edilir?
Giriş:
ben ilişkisel kavramlar gerçekten uygulanmamıştır eski bir veritabanı var.
Veritabanında, sipariş satırları için veri içeren bir OrderLine
tablom var. Tablo ayrıca Order
özel bilgilerle tüm sütunları içerir Bunun üzerine
. Bu, örneğin bir müşterinin sipariş numarası olabilir.
E.x. 10 satırlık siparişim varsa, OrderLines
tablomda 10 satır var ve her satırın tümü Order
spesifik verilere sahip. sipariş numarası veya müşteri bilgisi.
Ben o zaman çok daha mantıklı OrderLines
bir dizi/çantası var NHibernate benim Order
harita böylece böylece bir görünüm Orders
için oluşturulan benim kodunda yukarıdaki yapıya sahip istemiyordu.
Haritalama:
<class name="Order" table="[view_Orders]">
<bag name="OrderLines">
</class>
<class name="OrderLine" table="OrderLines" />
sorunu (basitleştirilmiş):
bakış karmaşıklığı imkansız görünüme kaydetmek için yapar.
NHibernate.Exceptions.GenericADOException: XXX ---> System.Data.SqlClient.SqlException: insert olamazdı NHibernates çalışırken bu istisnayı atar Görünüm veya işlev 'view_Orders' modifikasyon birden etkilediğinden güncellenebilir değil taban tabloları.
Benim NHibernate eşleme OrderLine
nesnelerin bir "set ya da torba" sahip bir Order
nesne olarak inşa edilir. İdeal olarak, NHibernate'in sadece tüm nesne yerine OrderLine
nesnesini kullanmaya devam etmesini istiyorum. Bunu gerçekleştirmenin bir yolu
var mı? Nesneyi farklı kilit modlarını kullanarak kilitlemeyi denedim ama bana yardımcı olmadı. Ben sorununuzu anlıyorum durumda
Yapmaya çalıştığınız gibi çalışmanız gerektiği gibi görünüyor. Kural dışı durum, NHibernate'in güncellenemeyen bir görünümle eşleştirilen Sipariş varlıklarınıza karşı bir GÜNCELLEŞTİRME gerçekleştirmeye çalıştığını gösterir. NHibernate, yalnızca varlığın kirli olduğunu düşünürse, OrderLines koleksiyonlarının dışında yapar. Diğer haritalanmış özelliklerini kontrol etmelisiniz. Ve belki neyin değiştiğini görmek için NHProf gibi bir profiler kullanmayı deneyin. –
Tam olarak. Siparişimi güncellenemediğinden, güncellenemeyen bir görünümle eşleştirilmemesini istiyorum. Bunun yerine sadece çocuk nesnesini güncellemek istiyorum.OrderLines'in çantası. NHProfiler'i kullanıyorum ve yukarıdaki istisnalar temel olarak NHibernate'den geçirilen bir SQL İstisnasıdır. – JuniorCoder