2010-06-22 18 views
8

Aşağıdaki öğeyi aldığımı varsayalım:NHibernate ile akıcı bir özelliği olmayan ve destek özelliği olmayan bir mülkü nasıl aktarabilirim?

public class CalculationInfo 
{ 
    public virtual Int64 Id { get; set; } 

    public virtual decimal Amount { get; set; } 

    public virtual decimal SomeVariable { get; set; } 

    public virtual decimal SomeOtherVariable { get; set; } 

    public virtual decimal CalculatedAmount 
    { 
     get 
     { 
      decimal result; 

      // do crazy stuff with Amount, SomeVariable and SomeOtherVariable 

      return result; 
     } 
    } 
} 

Temelde Ben sadece yazmak ve geri okumak istemiyorum CalculatedAmount hariç, tüm alanları NHibernate ile benim veritabanına okumak ve yazmak istiyorum

Benzer her konu ve karşılık gelen cevap, bu senaryoda bulunmayacağım değer için bir destek deposu belirtmekle uğraşmıştır.

Bunu Fluent NHibernate kullanarak nasıl yapabilirim?

Teşekkürler!

GÜNCELLEME: İşte ne denedim, ve şu sonuca varır:

İşte benim haritalama işim için ...

Map(x => x.CalculatedAmount) 
     .ReadOnly(); 

Ve bunun istisnası ...

'xxx.CalculationInfo' sınıfındaki 'CalculatedAmount' özelliği için bir belirteç bulamadık.

cevap

2

Ben Akıcı kullanmayın, ancak haritalama hiçbir belirleyici ile bir kalıcı özellik access="readonly" ile eşleştirilmiş, bu nedenle böyle bir şey için bakmak .Readonly()

(Readonly modeli bakış açısıyla; Değer DB'ye yazılır ve kirli denetimlerde kullanılır)

+0

ben ... bu konuşma sırası bana cevap güncelledik ilk şeylerden biriydi Karşılaştım ama yine de yukarıdaki istisna ile sonuçlandım. NHibernate'de çalışmayı engelleyecek bir ortam düşünebiliyor musunuz? –

+0

FluentNH'nin ürettiği XML'yi dışa aktarabilir misiniz? –

0

Hesaplanan değer gibi görünüyor. Bu değeri herhangi bir zamanda hesaplayabilirseniz, neden saklarsınız?

+0

Harika bir soru ... kısa cevap, reddetmedir. Hesaplama yöntemim değişse bile, her zaman belirli bir noktada hesaplanmış olana/bir eylemle ilişkili olana işaret edebilirim. –

+0

@Brandon Linton: Yeterince adil. +1. Özel bir destek alanının niçin ıslanabileceğinin bir nedeni var mı, yoksa daha çok bir estetik meselesi mi? –

+0

hiç kullanılmayacaktı ... hesaplama her seferinde gerçekleştirilmelidir, çünkü değişken faktörler herhangi bir zamanda değişebilir. –

5

Ben yolu Akıcı NHibernate içinde Erişim Mülkiyet basitçe eklemek edilir çalışan bu eşleştirmeyi almak anladım:

Map(x => x.CalculatedAmount).Access.ReadOnly(); 
İlgili konular