2009-02-12 13 views
29

Nesnede belirli bir özelliğin NHibernate kullanarak kirli olup olmadığını (yani, DB'de depolanandan farklı olan) olup olmadığını öğrenmek mümkün mü?Nhibernate kullanarak bir özelliğin kirli olup olmadığını söyleyebilir miyim?

Bu sorunun arka planı, üzerinde (nispeten) çok sayıda özellik bulunan bir nesneye sahip olduğumdur. Belirli bir özelliğin sayfanın ömrü boyunca değişip değişmediğini belirleyen bir işleve bir parametre (dize) geçirebilmem gerekir.

Gerekirse, nesnenin bir kopyasını oluşturabilir ve değeri kontrol etmek için sayfa ömrünün sonunda yansıma kullanabilirim, ancak bunu yapmakta isteksizim. NHibernate, bir mülkün kirli olup olmadığını söylese çok iyi olurdu. NHibernate (veya Hibnernate AFAIK) API aracılığıyla şu anda mevcut değildir

Teşekkür

cevap

23

ara üzerinden bu yöntem: nhibernate.info/doc/howto/various/finding-dirty-properties-in-nhibernate.html sonrası yanlış kirli durum için değerlendirir

+3

değiştirmek için: Int32 [] dirtyProps = oldState.Select ((o, ı) => Object.Equals (eskidurum [i] currentState [i]) -1 - i) .Where (x => x> = 0) .ToArray(). Aslında bu kirli kontrol, IEntityPersister.FindDirty aracılığıyla persisterden temin edilebilir. Örnek: http://stackoverflow.com/questions/1690755/in-nhibernate-my-check-if-entity-is-dirty-fails – Llyle

1

. Nesnelerin durumunu oturuma yükledikleri zaman depolayarak kendiniz böyle bir şey yazabilirsiniz, sonra bunları karşılaştırın.

NOT: Bunu kendim görmedim, ancak bir ORM seçimine kilitlenmediyseniz, Subsonic'e bakmanız gerekir. Kirli durumların çoğu, nesnelerin kendisinde izlenir ve belirli bir özelliğin kirli olup olmadığını belirleyebilecektiniz.

İlgili konular