5

सहेजते समय कॉलम को अनदेखा कैसे करें मेरे पास क्लाइंट नामक क्लास है जिसे एंटीटी फ्रेमवर्क कोड का उपयोग करके डेटाबेस तालिका में मैप किया गया है। तालिका में एक गणना क्षेत्र है जो मुझे अपने क्लाइंट क्लास में उपलब्ध होना चाहिए, लेकिन मैं समझता हूं कि इस क्षेत्र में लिखना संभव नहीं होगा। बचत करते समय संपत्ति को अनदेखा करने के लिए इकाई फ्रेमवर्क को कॉन्फ़िगर करने का कोई तरीका है, लेकिन पढ़ने के दौरान संपत्ति शामिल करें?इकाई फ्रेमवर्क कोड पहले -

मैंने अपनी कॉन्फ़िगरेशन क्लास में इग्नोर विधि का उपयोग करने या [NotMapped] विशेषता का उपयोग करने का प्रयास किया है, लेकिन ये संपत्ति को डेटाबेस से पढ़ने से रोकते हैं।

उत्तर

9

आप DatabaseGeneratedOption.Computed विकल्प के साथ DatabaseGeneratedAttribute उपयोग कर सकते हैं:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
public ComputedPropertyType ComputedProperty { get; set; } 

या यदि आप धाराप्रवाह एपीआई पसंद करते हैं तो आप अपने DbContext कक्षा में HasDatabaseGeneratedOption विधि का उपयोग कर सकते हैं:

public class EntitiesContext : DbContext 
{ 
    public DbSet<EntityType> Enities { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<EntityType>().Property(e => e.ComputedProperty).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed); 
    } 
} 
+1

धन्यवाद, यह उत्तर लगता है। हालांकि, चूंकि मैं अपनी गणना की गई संपत्ति का उपयोग किसी अन्य तालिका के विदेशी कुंजी संदर्भ के रूप में कर रहा हूं, इसलिए अब मुझे "एक रेफरेंसियल कॉन्स्ट्रेन में एक निर्भर संपत्ति स्टोर-जेनरेट कॉलम में मैप की गई है।" क्या यह अब विदेशी कुंजी संदर्भ के रूप में उपयोग करना संभव नहीं होगा? –

+0

@EasyTimer मुझे ईमानदारी से ऐसे परिदृश्य की कल्पना करने में कठिन समय है। ईएफ बिंदु से यह संभव नहीं है क्योंकि यदि आप एप्लिकेशन में संदर्भ बदलते हैं तो ईएफ को विदेशी कुंजी अपडेट करने में सक्षम होना चाहिए। हो सकता है कि आपके मामले में (जैसा कि मुझे आपकी सटीक आवश्यकताओं को नहीं पता) केवल नेविगेशन गुण पर्याप्त होंगे, यहां एक नज़र डालें: http://stackoverflow.com/questions/5691780/navigation-property-without-declaring-foreign -key – tpeczek

+0

मैंने इस आलेख में अपनी कक्षाओं को दो में विभाजित करके अपनी समस्या हल की है http://weblogs.asp.net/manavi/archive/2011/04/24/associations-in-ef-4-1-code- प्रथम भाग -4-टेबल-splitting.aspx मेरे पास एक वर्ग है जिसमें गणना की गई फ़ील्ड और एक और कक्षा है जिसमें कोई फ़ील्ड है जिसे मुझे संपादित करने में सक्षम होना चाहिए। –

3

मार्क संपत्ति की गणना इस प्रकार:

modelBuilder 
    .Entity<MyEntityType>() 
    .Property(_ => _.MyProperty) 
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed); 
+0

धन्यवाद, ऐसा लगता है कि ऐसा लगता है जवाब। हालांकि, चूंकि मैं अपनी गणना की गई संपत्ति का उपयोग किसी अन्य तालिका के विदेशी कुंजी संदर्भ के रूप में कर रहा हूं, इसलिए अब मुझे "एक रेफरेंसियल कॉन्स्ट्रेन में एक निर्भर संपत्ति स्टोर-जेनरेट कॉलम में मैप की गई है।" क्या यह अब विदेशी कुंजी संदर्भ के रूप में उपयोग करना संभव नहीं होगा? –

+0

@EasyTimer: एक विदेशी कुंजी के रूप में गणना की गई संपत्ति? हे भगवान। यदि आप गणना कुंजी परिणाम प्राथमिक कुंजी तालिका में किसी भी प्राथमिक कुंजी मान से मेल नहीं खाएंगे, तो आप क्या करेंगे? – Dennis

+0

मुझे एहसास है कि यह एक असामान्य और आदर्श परिदृश्य नहीं है। जैसा भी होता है, प्राथमिक कुंजी तालिका स्वयं ही एक दृश्य है जिसका प्राथमिक कुंजी उसी कुंजी में विदेशी कुंजी तालिका के रूप में गणना की जाती है और इसमें कोई विसंगति नहीं होती है। यह एक विरासत प्रणाली में नए कोड को पेश करने का एक हिस्सा है, जहां मेरे हाथ थोड़ा बंधे हैं। –

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