2010-05-20 17 views
17

Çok hassas tablolardan okuyan birkaç dersim var, bu yüzden NHibernate tarafından "ReadOnly" olarak kullanılmasını istiyorum. Her alan haritasındaki .ReadOnly() öğesi gerçekten özensiz ve güvendiğime emin değilim. Geleneksel XML eşleştirmelerle kolayca yapabileceğim gibi, tamamen okumanız için bir sınıfı nasıl kurarım?Fluent NHibernate: Tüm sınıfı nasıl ReadOnly olarak eşleştirilir?

Düzenle: Yanıt çalışmıyor. Bir ReadOnly() nesnesi üzerinde kaydetmeyi denediysem bir istisna atmasını bekledim, ancak sessizce böyle yapar.

Teşekkürler. beklediğiniz gibi

class EntityMap : ClassMap<Entity> 
{ 
    public EntityMap() 
    { 
     ReadOnly(); 

     // Mappings 
    } 
} 
+0

Herhangi bir geçici çözüm var mı? – kaptan

+0

@kaptan: Cevabım hakkındaki yorumumu düzenleyeceğim. Çalışıyor. Sadece bir istisna atmayı bekledim, ama sadece sessizce herhangi bir değişikliği yok sayıyor. – rebelliard

cevap

32

, bu kadar basit. Bu özelliği kullanarak, aldığınız nesnelerin salt okunur olduğundan emin olursunuz, böylece bunları GÜNCELLEME edemezsiniz. Ancak, yeni kayıtların oluşturulmasını ve hatta mevcut kayıtların veritabanında silinmesini SAĞLAMAZ!

11

SaltOkunur() özelliği gerçekten işe ETMEZ: olarak Akıcı NHibernate ile

+1

Hmm, farketmemişti, bu da çılgınlık! Sanırım, okuyucunun ve korumalı kurucunun bir karışımı işe yarayacaktı. – rebelliard

+1

Bence "Immutable" bunun için daha iyi bir isim. –

+0

'ReadOnly' Akıcı isimlendirmedir, orijinal NHibernate adlandırmadan daha iyi olduğu görülmüştür, [' mutable = ”false" '] (http://nhibernate.info/doc/nhibernate-reference/mapping.html# haritalama-beyan-sınıfı). Belki de bağlamında, "readOnly" karakterlerini "insert =" false "update =" false "için bir shorthand olarak tanımlamışlardır, ama benim görüşüme göre bu, sınıf ve koleksiyon mutabilitesi için talihsiz bir adlandırmadır. –

İlgili konular