2011-04-14 5 views
11

क्षेत्र की गणना की मैं उपयोग कर रहा हूँ इकाई की रूपरेखा कोड पहले, और मैं एक इकाई एक StartTime संपत्ति के साथ परिभाषित, एक EndTime संपत्ति और एक Duration संपत्ति (कुछ अन्य लोगों के साथ) है। Duration संपत्ति एक गणना की गई फ़ील्ड है और यह प्रारंभ और समाप्ति समय के बीच मिनटों की अवधि है। मेरी संपत्ति घोषणाओं नीचे दिखाया गया हैं:स्टोर केवल पढ़ने के साथ इकाई की रूपरेखा कोड पहले

public DateTime StartTime { get; set; } 
public DateTime EndTime { get; set; } 
public int Duration 
{ 
    get 
    { 
     return (int)this.EndTime.Subtract(this.StartTime).TotalMinutes; 
    } 
} 

मैं कोड में इस गणना को चलाने के लिए चाहते हैं, लेकिन अवधि मान प्रारंभ और समाप्ति समय मानों के साथ डेटाबेस के लिए कायम है (इसे बाद लाइन नीचे आसान बनाने के लिए जब मैं इन आंकड़ों के खिलाफ रिपोर्ट चलाने के लिए आता हूं)।

मेरे सवाल यह है कि मैं इस केवल पढ़ने के लिए संपत्ति वापस नक्शा और पहले कोड का उपयोग कर डेटाबेस के लिए बचाने के लिए मिल सकता है, है?

उत्तर

19

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

मेरी संपत्ति अब इस तरह दिखता है:

public int Duration 
{ 
    get 
    { 
     return (int)this.EndTime.Subtract(this.StartTime).TotalMinutes; 
    } 
    protected set {} 
} 
+0

आह, अच्छा विचार यह संरक्षित करना करने के लिए! क्या आपने सेटटर को 'निजी' बनाने का भी प्रयास किया था? यह जानना दिलचस्प होगा कि क्या ईएफ मानचित्र को डीबी कॉलम पर मैप करेगा। – Slauma

+1

मैं सिर्फ एक 'private' सेटर के साथ की कोशिश की है और आश्चर्यजनक रूप से यह काम करने के लिए जारी! – KevB

+3

एफई डेटाबेस हर बार इस इकाई लोड किया जाता है अद्यतन करेगा। हम अनुमान लगाते हैं कि ईएफ की परिवर्तन ट्रैकिंग गलती से मानती है कि यह संपत्ति बदल गई है। हमारे लिए, यह अप्रत्याशित समवर्ती संघर्ष का कारण बन गया। –

2

एक खाली सेटर की आपूर्ति एक संभव समाधान हो सकता है (हालांकि उसके बाद संपत्ति अब और निश्चित रूप से केवल पढ़ने के लिए नहीं है,): जहाँ तक मुझे पता है

public int Duration 
{ 
    get 
    { 
     return (int)this.EndTime.Subtract(this.StartTime).TotalMinutes; 
    } 
    set { } 
} 

, केवल पढ़ने के गुणों में एक स्तंभ के लिए mappable नहीं कर रहे हैं डेटाबेस।