2014-12-17 6 views
5

मैं इस मॉडल है कॉलम में एनसीएलओबी प्रकार। अब, एनसीएलओबी प्रकार के साथ मैं अपने टेबल पर बराबर या भेद जैसे कुछ संचालन नहीं कर सकता ....इकाई की रूपरेखा और NCLOB के रूप में स्ट्रिंग ओरेकल पर Db

मैं एमएफ को वर्चुअल टाइप करने के लिए कैसे कर सकता हूं?

उत्तर

6

मैं मॉडल

public class Teacher 
{ 
    public int TeacherID { get; set; } 

    [StringLength(255, MinimumLength = 3, ErrorMessage = "My Error Message")] 
    public string Name { get; set: } 

    [StringLength(255, MinimumLength = 3, ErrorMessage = "My Error Message")] 
    public string Surname{ get; set; } 
} 

में अधिकतम स्ट्रिंग लंबाई की स्थापना इस मुद्दे को हल करने के लिए प्रबंधित किया है StringLength Orcale बिना एक एनसीएलओबी फ़ील्ड बनाता है जिसमें 4 जीबी डेटा हो सकता है।

नोट: varchar के लिए अधिकतम लंबाई 4000 बाइट्स है, इसलिए हम MaximumLenght के रूप में 2000 से अधिक सेट नहीं कर सकता (यूनिकोड के साथ चरित्र प्रति 2 बाइट)

+0

मेरे पास LINQ क्वेरी में .ToString() के साथ एक int है और यह बनाई गई क्वेरी में TO_NCLOB का उपयोग कर रहा है। क्या इसे रोकने का कोई तरीका है? – JonathanPeel

+0

@ जोनाथनपील यदि int LINQ क्वेरी के बाहर उपलब्ध है, तो आप intQ को LINQ के बाहर स्थानीय स्ट्रिंग वेरिएबल में परिवर्तित कर सकते हैं, और LINQ क्वेरी में स्ट्रिंग का उपयोग कर सकते हैं। –

+0

मुझे '[फ़ंक्शन (फ़ंक्शनटाइप.बिल्टइन फ़ंक्शन, "TO_CHAR")] का उपयोग करके ओरेकल फ़ंक्शंस में सीमा विधियों को मैप करने का एक तरीका मिला। मैंने फिर 'int.ToChar() 'बनाया, और यह आश्चर्यजनक रूप से काम करता है। – JonathanPeel

4

यह स्पष्ट रूप से कॉन्फ़िगर करने के लिए प्रयास करें:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Teacher>().Property(x => x.Name).HasColumnType("varchar"); 
    modelBuilder.Entity<Teacher>().Property(x => x.Surname).HasColumnType("varchar"); 
} 

देखें Documentation

+0

मैं प्रबंधित किया है यह सही तरीके से 'हल करने के लिए। मैं जवाब पोस्ट करूंगा लेकिन प्रयास के लिए वैसे भी धन्यवाद! – Andrea

+0

केवल 'varchar2' होना चाहिए? – Toolkit

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