2012-01-13 10 views
13

मेरी अंग्रेजी के लिए खेद है।ईएफ आईडी-कॉलम में नल डालने का प्रयास क्यों कर रहा है?

मैं एंटिटी फ्रेमवर्क 4.0 (मॉडल पहले) का उपयोग करके अपनी परियोजना लिख ​​रहा हूं। परियोजना की शुरुआत में, मैं इस समस्या का सामना करना पड़:,

"स्तंभ में Null मूल्य सम्मिलित नहीं कर सकते 'CategoryID' तालिका: मैं डेटाबेस में भरा ऑब्जेक्ट सम्मिलित करने की कोशिश कर रहा हूँ, लेकिन मैं एक अपवाद मिल 'ForumDB.dbo.Categories'; कॉलम नल की अनुमति नहीं देता है। INSERT विफल रहता है। कथन समाप्त कर दिया गया है। "

Category usingCategory = new Category("Using Forums", "usingforums", 0); 
    using (Context) 
    { 
     Context.Categories.AddObject(usingCategory); 
     Context.SaveChanges(); 
    } 

मैं इस वस्तु की जाँच की, और मुझे यकीन है कि यह भर जाता है कर रहा हूँ।

शायद ज़रुरत पड़े:

public Category(string name, string urlName, int index) 
{ 
    CategoryId = Guid.NewGuid(); 
    Name = name; 
    UrlName = urlName; 
    CategoryIndex = index; 
} 

कृपया मुझे बताओ कि क्या चल रहा है? किसी भी मदद के लिए धन्यवाद!

+0

आपकी श्रेणी आईडी क्या डेटाटाइप है? – Kyle

+0

@ केली, guid (अद्वितीय पहचानकर्ता)। –

उत्तर

24

इस पर एक नज़र डालें: https://stackoverflow.com/a/5338384/171703 - इकाई ढांचा यह मान ले सकता है कि आपका श्रेणी आईडी फ़ील्ड एक पहचान है और इसलिए डेटाबेस के लिए यह शून्य हो रही है कि वह इसे आपके लिए भर दे।

+1

यह अच्छा है, लेकिन मैं मॉडल-प्रथम का उपयोग करता हूं, लेकिन इस सवाल में समस्या को कोड-प्रथम के दायरे में हल किया गया है। –

+0

@ KovpaevAlexey उस प्रश्न में स्वीकृत उत्तर पहले कोड के लिए है, लेकिन उस प्रश्न में विशिष्ट लिंक उत्तर पहले मॉडल के लिए है। – hvd

+0

@hvd, जब मैंने डीबी-साइड पर आईडी उत्पन्न किया तो यह समस्या हल हो गई है। –

14

मैं आज इस में भाग गया और डेटाबेस से अपने ईएफ कक्षाओं को पुन: उत्पन्न करना पड़ा।

कि करने के बाद, मैंने पाया कि एफई कहा:

[DatabaseGenerated(DatabaseGeneratedOption.None)] 
public int Id { get; set; } 

इस "आईडी" क्षेत्र है कि SQL में एक पहचान स्तंभ हुआ करता था, लेकिन एप्लिकेशन से सौंपा होने के लिए बदल गया था।

मुझे लगता है कि अगर आप उस गुण की जरूरत नहीं है एफई वास्तव में डेटाबेस ('विन्यास से अधिक सम्मेलन') करने के लिए आईडी नहीं भेजेंगे

+1

मेरे लिए भी काम किया: कक्षाओं को पुन: उत्पन्न करने की आवश्यकता नहीं थी, बस संपत्ति में विशेषता को जोड़ा और यह काम किया। – sluiper

+0

ने भी मेरे लिए काम किया .. बहुत बहुत धन्यवाद – Steph8

3

मैं पी के रूप में पूर्णांक आईडी के साथ तालिका बनाया था, लेकिन भूल गया था "पहचान विशिष्टता" सेट करने के लिए = सही

+0

आपने मेरा दिन बनाया! – Hari

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

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