2012-06-27 13 views
35

मैं एंटीटी फ्रेमवर्क कोड रखने के लिए सही वाक्यविन्यास को समझने की कोशिश कर रहे वेब के चारों ओर खोज कर रहा हूं सबसे पहले कॉलम के साथ मेरी तालिका बनाएं: वर्कर (अधिकतम)।मैं एएसपीनेट ईएफ कोडफर्स्ट डेटा एनोटेशन का उपयोग कर वर्चर (अधिकतम) में SQL सर्वर में कॉलम कैसे सेट करूं?

यह मेरे पास है। डिफ़ॉल्ट रूप से यह वर्चर (128) बनाता है। मैं वर्कर (अधिकतम) कैसे बना सकता हूं?

मैंने सफलता के बिना [अधिकतम लम्बाई] कोशिश की है।

किसी भी मदद की सराहना की जाएगी। धन्यवाद!

[Column(TypeName = "varchar")] 
public string MediaDesc { get; set; } 
+4

'[कॉलम (TypeName =" वर्कर (MAX) ")] 'मेरे लिए काम करता है। लेकिन मुझे आपके कोड स्निपेट के साथ 'वर्चर (8000)' मिलता है, जैसा कि आप कहते हैं 'वर्कर (128)' नहीं। अजीब। आप किस ईएफ संस्करण का उपयोग कर रहे हैं और डेटाबेस संस्करण क्या है? – Slauma

+0

धन्यवाद स्लुमा। आंकड़े मैंने सबसे स्पष्ट रूप से अलग-अलग तरीकों का एक गुच्छा करने की कोशिश की। एक जादू की तरह काम करता है! – Maddhacker24

+0

यदि आप इसे उत्तर के रूप में सबमिट करते हैं तो मैं स्वीकार करूंगा। फिर से Thx! – Maddhacker24

उत्तर

58
[Column(TypeName = "varchar(MAX)")] 

हैरानी की बात है सबसे स्पष्ट समाधान काम करता है।

[MaxLength] विशेषता केवल एक अधिकतम लंबाई कि मैक्स लेकिन नहीं है के साथ एक varchar स्तंभ बनाता है - मेरे मामले में (SQL सर्वर एक्सप्रेस 2008 R2) - 8000

+0

thx फिर से स्लुमा – Maddhacker24

+0

** डेटाबेस पहली विधि का उपयोग करके कॉलम आकार को बदलें **: मैंने इसे nvarchar (50) से अधिकतम आकार बदलने के लिए एसक्यूएल में उपयोग किया: अधिकतम 'तालिका बदलें उत्पाद परिवर्तन कॉलम वेबसाइट nvarchar (अधिकतम) null' नोट: यह मॉडल प्रॉपर्टी को प्रभावित नहीं करेगा, लेकिन यदि आप कॉलम नाम को नए नाम में बदलते हैं तो यह मॉडल को त्रुटि के साथ प्रभावित करेगा, फिर आप विकल्प 'डेटाबेस से अपडेट मॉडल' का उपयोग कर सकते हैं। या '.edmx' फ़ाइल को हटाएं और इसे फिर से बनाएं। उम्मीद किसी की मदद करता है। – stom

+1

MAX स्ट्रिंग लम्बाई के लिए यह ठीक काम करता है लेकिन यदि आप लाइन में विशिष्ट स्ट्रिंग लम्बाई का उल्लेख करना चाहते हैं तो यह विफल होना शुरू हो जाता है। यह [कॉलम ("ToDoItem", TypeName = "nvarchar (2000)")] काम नहीं करेगा और वास्तव में रहस्यमय त्रुटियों के साथ विफल हो जाएगा जो आपको दृश्यों के पीछे क्या गलत हो रहा है इसका कोई संकेत नहीं देता है। MAX nvarchar लंबाई के लिए आपको स्ट्रिंग लम्बाई विशेषता को अलग से उल्लेख करने की आवश्यकता नहीं है। मैं ईएफ 6 बीटीडब्ल्यू पर हूं। – RBT

2

[अधिकतम लंबाई] एनोटेशन का उपयोग करें।

[Column(TypeName = "varchar")] 
[MaxLength] 
public string MediaDesc { get; set; } 
+5

मेरे लिए यह 'वर्कर (8000)' कॉलम बनाता है, न कि 'वर्कर (MAX) '। – Slauma

+2

मैक्सलेथैथ एक सत्यापन है, कॉलम परिभाषा –

10

यह आपको nvarchar(max) मिल जाएगा:

[StringLength(int.MaxValue)] 

मैं वहाँ गैर यूनिकोड मजबूर करने के लिए एक विशेषता है नहीं लगता है तो varchar(max) के लिए आप DbContext में एक ट्वीक की जरूरत है, (क्या आप वाकई चाहते हैं?):

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Entity>().Property(x => x.MediaDesc).IsUnicode(false); 
} 
+0

है आप सुनिश्चित हैं कि 'int.MaxInt'' स्ट्रिंग लम्बाई 'विशेषता के लिए काम करता है? मैंने इसे 'अधिकतम लम्बाई' विशेषता ('[स्ट्रिंग लम्बाई (int.MaxInt)] 'के साथ करने की कोशिश की) और एक अपवाद प्राप्त करें कि मान 4000 से अधिक नहीं होना चाहिए। शायद यह' स्ट्रिंग लम्बाई 'के साथ काम करता है, लेकिन यदि ऐसा है, तो यह सब कुछ है बहुत भ्रमित ... – Slauma

+0

मैक्सलेथेंथ के बारे में कोई विचार नहीं। मैंने स्ट्रिंग लम्बाई के साथ प्रयास किया, और यह अपेक्षा के अनुसार काम करता है। –

+2

मैंने पाया कि '[कॉलम (TypeName =" varchar ")] विशेषता के साथ संयोजन समस्या है। इसके बिना 'अधिकतम लम्बाई' और 'स्ट्रिंग लम्बाई' के साथ भी काम करता है। +1 – Slauma

0

[Column(TypeName = "varchar(MAX)")] डेटाबेस में varchar (अधिकतम) में परिणाम। यदि आपके पास कस्टम कॉन्फ़्रेंस सेटिंग स्ट्रिंग्स मैक्सलाइट 100 है, modelBuilder .Properties<string>() .Configure(c => c.IsUnicode(false).HasMaxLength(100)); आपको अधिकतम लम्बाई विशेषता [Column(TypeName = "varchar(MAX)"), MaxLength] शामिल करने की आवश्यकता है। यदि आप नहीं करते हैं, तो आपको डेटाबेस में वर्कर (MAX) मिलेगा लेकिन सत्यापन 100 से अधिक वर्णों के लिए फेंक देगा

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