2016-04-05 64 views
0

Bu nedenle, birçok kaynak içeren (çoktan çoğuna kadar) çok sayıda Rapor içeren (bir ile bir çok) Olay adında bir varlık var.NHibernate - Güncellenmesi gerekmeyen öğeyi güncellemeye çalışır.

Yalnızca olayımı güncellemeye çalıştığımda, anlamaya çalıştığım bir sorunla karşı karşıyayım. Bu durum, kasayı (bu iyi durumda) güncelleştirmesiyle güncelleştirmeye çalışır ve güncelleştirmeyi dener. raporun, basamak tablosundan dolayı katılım tablosundaki kaynakları (hangisi iyi), ancak bazı nedenlerden dolayı, değişiklik yapmaması gereken Kaynak varlığını da güncellemeye çalışır. Burada yaptığım şey, başarısız olduğunda.

var eventFromDb = _session.Get<Event>(eventId); 

eventFromDb.Reports.ToList().ForEach(x => x.Status = GetStatus()); 

_session.Update(eventFromDb); 

Neden olursa olsun?

+0

Kaynakta daha fazla alanınız var mı? –

cevap

0

İstenmeyen güncellemeler genellikle, özelliklerin yanlışlıkla değiştirilmesine neden olabilir. NHibernate, özellikler yüklenirken yüklenen tam olarak aynı değeri döndürmediğinde otomatik olarak izleme ve tüm kayıtları günceller.

bu cevapları bakınız: bu arada Nhibernate doing updates on select?

Why hibernate always call "update" statement after using "select" statement in MySQL?

    • , sen update() aramaya gerek yoktur. NHibernate güncellemeleri, oturumda bulundukları sırada zaten varlıkları değiştirdi. Veritabanından yüklediğiniz her şey (örneğin, sizin durumunuzda session.get()) oturumdadır. Sadece işlemi yap.

  • +1

    Küçük tamamlayıcı: Gördüğüm en yaygın hayalet güncelleştirmeler, null olmayan özelliklere sahip olan varlıklardan kaynaklanırken, DB'deki karşılık gelen sütunlar null ve null. Bu, nesne özelliklerinin db'den alınan değerlerden farklı değerlere sahip olmasına neden olur. Yani NHibernate onu kirletir. –