c# - मैं एएसपीनेट ईएफ कोडफर्स्ट डेटा एनोटेशन का उपयोग कर वर्चर्स(अधिकतम) में SQL सर्वर में एक कॉलम कैसे सेट करूं?




sql-server entity-framework (4)

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

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

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

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

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

@ स्लुमा उत्तर के लिए अद्यतन करें।

OnModelCreating में इस तरह के सभी तारों के लिए ओवरराइड का उपयोग करना:

modelBuilder.Properties<string>().Configure(s => 
    s.HasMaxLength(256).HasColumnType("nvarchar"));

और उसके बाद गुणों के साथ गुणों को संशोधित करना:

[Column(TypeName = "nvarchar(MAX)")]
public string CaseComment { get; set; }

या यह:

modelBuilder.Entity<YourClass>()
    .Property(b => b.CaseComment)
    .HasColumnType("nvarchar(MAX)");

यह अपवाद का कारण बन सकता है। Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. भले ही कॉलम सही डेटा प्रकार का है, एंटीटी फ्रेमवर्क अभी भी सोचता है कि यह nvarchar(256) और त्रुटि DbEntityValidationException फेंकता है।

इसे ठीक करने के लिए निम्न का उपयोग करें:

[Column(TypeName = "nvarchar(MAX)")]
[MaxLength]
public string CaseComment { get; set; }

या

modelBuilder.Entity<YourClass>()
    .Property(b => b.CaseComment)
    .HasColumnType("nvarchar(MAX)")
    .HasMaxLength(null);

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

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

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


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

आश्चर्यजनक रूप से सबसे स्पष्ट समाधान काम करता है।

[MaxLength] अधिकतम लम्बाई [MaxLength] विशेषता केवल अधिकतम लंबाई वाले [MaxLength] कॉलम बनाती है जो MAX नहीं है लेकिन - मेरे मामले में (SQL सर्वर एक्सप्रेस 2008 आर 2) - 8000।






ef-code-first