एंटिटी फ्रेमवर्क 4.1 कोड फर्स्ट में एक क्लास प्रॉपर्टी को अनदेखा करना


299

मेरी समझ यह है कि यह [NotMapped]विशेषता EF 5 तक उपलब्ध नहीं है जो वर्तमान में CTP में है, इसलिए हम इसे उत्पादन में उपयोग नहीं कर सकते।

ईएफ 4.1 में गुणों को कैसे अनदेखा किया जा सकता है?

अद्यतन: मैंने कुछ और अजीब देखा। मुझे [NotMapped]काम करने का गुण मिला लेकिन किसी कारण से, EF 4.1 अभी भी डेटाबेस में Disposed नाम का एक कॉलम बनाता public bool Disposed { get; private set; }है, जिसके साथ यह चिह्नित है [NotMapped]। कक्षा IDisposeableबेशक लागू होती है , लेकिन मुझे नहीं लगता कि यह कैसे मायने रखता है। कोई विचार?



मुझे ऐसा लगता है कि इसे एंटिटी फ्रेमवर्क 4.1 पर भी लागू होना चाहिए। इस लिंक की जाँच करें: social.msdn.microsoft.com/Forums/eu/adodotnetentityframework/…
ilmatte

1
@SamLeach: मैंने अपनी पोस्ट करने से पहले ही उस प्रश्न को पढ़ लिया और उसका हल नहीं खोजा। सवाल यह है कि ईएफ 4 में समान कैसे हासिल किया जाए? क्या मुझे उस पोस्ट में कुछ याद आया?
खान

यही कारण है कि मैंने सोचा था कि जब से मैं EF 4.1 है और विशेषता देख सकता हूं। लेकिन ईएफ मेरे अनुप्रयोगों में इसे पूरी तरह से अनदेखा करने में काफी खुश लगता है। यह मूल और संदर्भ प्रकारों के साथ-साथ कॉम संदर्भ प्रकारों जैसे कि एमएस ऑफिस इंट्रॉर्प एप्लिकेशन के लिए सही है।
रहेल खान

मुझे खेद है, लेकिन मैंने एक साधारण आवेदन के साथ अभी एक परीक्षण किया है और यह काम करता है। क्या आप नमूना कोड प्रदान कर सकते हैं?
इल्मतते

जवाबों:


594

आप NotMappedकिसी विशेष संपत्ति को बाहर करने के लिए कोड-प्रथम को निर्देश देने के लिए विशेषता डेटा एनोटेशन का उपयोग कर सकते हैं

public class Customer
{
    public int CustomerID { set; get; }
    public string FirstName { set; get; } 
    public string LastName{ set; get; } 
    [NotMapped]
    public int Age { set; get; }
}

[NotMapped]विशेषता System.ComponentModel.DataAnnotationsनामस्थान में शामिल है ।

आप वैकल्पिक रूप से अपनी कक्षा में Fluent APIओवरराइडिंग OnModelCreatingफ़ंक्शन के साथ ऐसा कर सकते हैं DBContext:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Entity<Customer>().Ignore(t => t.LastName);
   base.OnModelCreating(modelBuilder);
}

http://msdn.microsoft.com/en-us/library/hh295847(v=vs.103).aspx

मैंने EF 4.3जो संस्करण चेक किया है , वह नवीनतम स्थिर संस्करण है, जब आप NuGet का उपयोग करते हैं।


संपादित करें : SEP 2017

Asp.NET Core (2.0)

डेटा एनोटेशन

यदि आप asp.net core ( 2.0 इस लेखन के समय ) का उपयोग कर रहे हैं , तो [NotMapped]गुण का उपयोग संपत्ति स्तर पर किया जा सकता है।

public class Customer
{
    public int Id { set; get; }
    public string FirstName { set; get; } 
    public string LastName { set; get; } 
    [NotMapped]
    public int FullName { set; get; }
}

धाराप्रवाह एपीआई

public class SchoolContext : DbContext
{
    public SchoolContext(DbContextOptions<SchoolContext> options) : base(options)
    {
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Customer>().Ignore(t => t.FullName);
        base.OnModelCreating(modelBuilder);
    }
    public DbSet<Customer> Customers { get; set; }
}

3
धन्यवाद। उनके पीछे प्रयासों के साथ उत्तर देखना हमेशा अच्छा होता है। मैंने वास्तव में दूसरे उत्तर को सही मानने से पहले आपकी अंतिम पंक्ति को नोटिस नहीं किया था। चूँकि आपका उत्तर पहले आया था, इसलिए मुझे लगता है कि आपको सही करने के लिए बदलना उचित है। मुझे यकीन है कि @ilmatte बुरा नहीं मानेंगे।
रहेल खान

13
EF के v5> के साथ ये अब System.ComponentModel.DataAnnotations.Schema
डेवो

जब मैं फ्लुएंटंपिंग का उपयोग करता हूं, तो क्षेत्र अभी भी परिणाम में वापस आ गया है, हालांकि यह पूरी तरह से पता है। मैं इसे कैसे लौटाऊंगा, यह भी नहीं बताया जाएगा।
रॉडने

8
[NotMapped] का उपयोग करने से अन्य धारावाहिकों (उदाहरण के लिए JSON / XML) को इस संपत्ति का नक्शा न देने के लिए भी कहा जाएगा। यदि आप केवल डेटाबेस तालिका में मैपिंग को रोकना चाहते हैं, लेकिन फिर भी धारावाहिक संपत्ति का उपयोग कर रहे हैं, तो आपको OnModelCreating दृष्टिकोण का उपयोग करना होगा।
मैक्समिंटज

हालाँकि, मैंने यह पता लगाया है कि यह कैसे पता चलता है, यह एंटिटी फ्रेमवर्क पर विरासत में मिली संपत्तियों के साथ काम नहीं करता है + विशेषता और धाराप्रवाह एपीआई निर्देश की अनदेखी करते हैं
पीबीओ

35

EF 5.0 के रूप में, आपको System.ComponentModel.DataAnnotations.Schemaनामस्थान को शामिल करने की आवश्यकता है ।


2
क्या अभी भी यही मामला है? मैं EF 6.0 का उपयोग कर रहा हूं और यह अब मेरे प्रोजेक्ट के लिए कम से कम नहीं है। जब तक मैंने एक नामस्थान का उल्लेख नहीं किया है जो पहले से ही कहीं ऊपर संदर्भित है।
JARRRRG
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.