entity framework मैं एंटिटी फ्रेमवर्क 4.1 "कोड केवल" धाराप्रवाह एपीआई का उपयोग कर एक चार संपत्ति को कैसे मैप करूं?




entity-framework char (2)

मेरे पास एक वस्तु है जिसमें एक चार संपत्ति है:

public class Product
{
    public char Code
    {
        get;
        set;
    }
}

एंटिटी फ्रेमवर्क वर्णों को मैप करने में सक्षम नहीं प्रतीत होता है (जब मैं अपने मॉडल ऑब्जेक्ट्स से डेटाबेस स्कीमा बनाता हूं तो यह फ़ील्ड डेटाबेस से गायब है)। क्या वैसे भी मैं धाराप्रवाह एपीआई का उपयोग कर चार (उदाहरण के लिए एक स्ट्रिंग) मानचित्र कर सकता हूं? मैं मॉडल ऑब्जेक्ट्स को बदलना नहीं चाहता क्योंकि वे विरासत साझा लाइब्रेरी का हिस्सा हैं।


Fluent API में आप HasColumnType विधि का उपयोग कर डेटाबेस कॉलम डेटा प्रकार निर्दिष्ट कर सकते हैं:

modelBuilder.Entity<Product>()   
.Property(p => p.Code)   
.HasColumnType("char");

एंड्रयू आर्टस के उत्तर के अनुसार, हैसकोलम टाइप टाइप ईएफ 4.1 में उपलब्ध है।

डेटा एनोटेशन का उपयोग करने वालों के लिए, कॉलम एट्रिब्यूट एक ही चीज़ को पूरा कर सकता है।

[Column(TypeName="char")]
public string Code { get; set; }

Char इकाई फ्रेमवर्क के लिए मान्य आदिम प्रकार नहीं है = इकाई ढांचा इसे मैप नहीं करता है। यदि आप सीएसडीएल संदर्भ की जांच करते हैं तो आपको वैध प्रकारों की सूची दिखाई देगी ( char उनमें से नहीं है)।

डाटाबेस char(1) string रूप में अनुवादित है ( सीएसडीएल अनुवाद से एसक्यूएल )। Char को निश्चित लंबाई 1 के साथ गैर-यूनिकोड स्ट्रिंग के रूप में वर्णित किया गया है।

स्ट्रिंग का उपयोग करके एकमात्र बदसूरत विकल्प दूसरी मैप की गई संपत्ति है और आपकी char गैर-मैप की गई संपत्ति केवल उस संपत्ति से string[0] उपयोग करेगी। यह एक और उदाहरण है कि ईएफ में कुछ सरल प्रकार के मैपिंग या कनवर्टर्स कितने गायब हैं।







fluent-interface