2010-06-22 5 views
8

मान लें कि मेरे पास निम्न इकाई है:मैं एनएचबर्ननेट के साथ कोई सेटटर और कोई बैकिंग प्रॉपर्टी के साथ संपत्ति को कैसे मैप कर सकता हूं?

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; 
     } 
    } 
} 

मूल रूप से मैं CalculatedAmount के अपवाद के साथ NHBernate के साथ अपने डेटाबेस में सभी फ़ील्ड को पढ़ना और लिखना चाहता हूं, जिसे मैं बस लिखना चाहता हूं और वापस नहीं पढ़ना चाहता in।

प्रत्येक समान समस्या और संबंधित उत्तर ने मूल्य के लिए बैकिंग स्टोर निर्दिष्ट करने के साथ निपटाया है, जो कि इस परिदृश्य में नहीं होगा।

मैं फ्लुएंट एनएचबेर्नेट का उपयोग करके इसे कैसे पूरा कर सकता हूं?

धन्यवाद!

अद्यतन: यहां मैंने जो कोशिश की है, और त्रुटि यह है:

यहां संपत्ति के लिए मेरा मानचित्रण है ...

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

और अपवाद यह उत्पन्न करता है ...

वर्ग 'xxx.CalculationInfo'

में संपत्ति 'परिकलित राशि' के लिए एक सेटटर नहीं मिला

उत्तर

2

मैं धाराप्रवाह का उपयोग नहीं है, लेकिन मानचित्रण में कोई सेटर के साथ एक मौजूदा संपत्ति access="readonly" साथ मैप किया गया है, तो कुछ के लिए देखो .Readonly()

(केवल पढ़ने योग्य मॉडल नजरिए से है, मूल्य डीबी को लिखा जाता है और गंदे चेक में उपयोग किया जाता है)

+0

मुझे लगता है कि पता करने के लिए मेरा उत्तर को नवीनीकृत किया है ... यह पहली चीजों में से एक था मैं पार आया, लेकिन मैं अभी भी उपरोक्त अपवाद के साथ समाप्त हो गया। क्या आप एनएचबेर्नेट में एक सेटिंग के बारे में सोच सकते हैं जो इसे काम करने से रोक देगा? –

+0

क्या आप एक्सएमएल निर्यात कर सकते हैं जो FluentNH उत्पन्न करता है? –

0

ऐसा लगता है कि यह एक गणना मूल्य है। यदि आप किसी भी समय इस मूल्य की गणना कर सकते हैं, तो इसे बिल्कुल क्यों स्टोर करें?

+0

महान प्रश्न ... संक्षिप्त उत्तर अस्वीकार नहीं है। यहां तक ​​कि यदि गणना की मेरी पद्धति में परिवर्तन होता है, तो भी मैं हमेशा किसी बिंदु पर किसी दिए गए बिंदु पर गणना की गई थी। –

+0

@ ब्रैंडन लिटन: पर्याप्त मेला। +1। क्या कोई कारण है कि एक निजी समर्थन क्षेत्र अवांछित है, या यह सौंदर्यशास्त्र के मुद्दे का अधिक है? –

+0

यह कभी भी उपयोग नहीं कर पाएगा ... गणना हर बार किया जाना चाहिए, क्योंकि परिवर्तनीय कारक किसी भी समय बदल सकते हैं। –

5

मैं पता लगा कि जिस तरह से इस मानचित्रण पहुँच संपत्ति धाराप्रवाह NHibernate में काम कर बस को जोड़ने के लिए है मिलती है:

Map(x => x.CalculatedAmount).Access.ReadOnly(); 
संबंधित मुद्दे

 संबंधित मुद्दे