2015-11-16 12 views
6

में मूल्य NULL सम्मिलित नहीं कर सकता है मेरे पास आईडी की प्राथमिक कुंजी वाला एक तालिका है, यह फ़ील्ड पहचान कॉलम नहीं है। एंटिटी फ्रेमवर्क 6 के लिए मेरा माइग्रेशनइकाई फ्रेमवर्क गैर पहचान - कॉलम 'आईडी'

CreateTable(
    "dbo.Action", 
    c => new 
    { 
     ID = c.Int(nullable: false, identity: false), 
     ActionName = c.String(maxLength: 50), 
    }) 
    .PrimaryKey(t => t.ID); 

यह सब मेरे लिए काफी सीधे दिखता है।

public static void Seed(this DbSet<Action> entitySet) 
{ 
    MainContext dbCtx = DataRepositoryBase<Action>.GetContext(entitySet) as MainContext; 
    if (dbCtx != null) 
    { 
      entitySet.Add(new Action() 
      { 
       ID = 1, 
       ActionName = "Test" 
      });     
    } 
} 

यह इस बात मैं कोई त्रुटि मिलती है

"कॉलम 'आईडी' में Null मूल्य सम्मिलित नहीं कर सकते, टेबल 'dbo.Action' में बताया गया है: तब मैं कुछ डेटा बीज के लिए एक विधि है ; स्तंभ nulls की अनुमति नहीं डालने में विफल रहता है \ r \ n बयान समाप्त "

आप मैं स्पष्ट रूप से आईडी स्तंभ के लिए एक मूल्य प्राप्त हो रहा हूँ देख सकते हैं किया गया है।।। मेरे संदेह है कि इकाई की रूपरेखा आईडी उम्मीद कर रही है एक पहचान स्तंभ

इकाई वर्ग बहुत सरल है हो रहा है

[DataContract] 
public class Action 
{ 
    [DataMember] 
    public int ID { get; set; } 

    [DataMember] 
    public string ActionName { get; set; } 
} 
+0

आप 'Action' इकाई के लिए मानचित्रण पोस्ट कर सकते हैं इसे ठीक कर सकते हैं? –

+0

क्या आपने ईएफ को बताया है कि आईडी कॉलम पहचान कॉलम नहीं है? – DavidG

+0

निश्चित रूप से मैं माइग्रेशन में क्या कर रहा हूं जब मैं पहचान कहता हूं: झूठी – keitn

उत्तर

6

आपका माइग्रेशन केवल डेटाबेस में तालिका बनाता है लेकिन इकाई की रूपरेखा नहीं बताता है आईडी प्रॉपर्टी IDENTITY कॉलम नहीं है। एफई प्रॉपर्टी आईडी कहा जाता है अगर आप इसे नहीं बताया जो संपत्ति प्राथमिक कुंजी के रूप में उपयोग करने के लिए चुनता है, लेकिन आप यह भी, DatabaseGenerated विशेषता का उपयोग कर ऐसा करने एफई है कि यह एक पहचान स्तंभ नहीं है बताने के लिए की जरूरत है:

[DataContract] 
public class Action 
{ 
    [DataMember] 
    [Key] //This isn't technically needed, but I prefer to be explicit. 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int ID { get; set; } 

    [DataMember] 
    public string ActionName { get; set; } 
} 
2

त्रुटि इस तथ्य के कारण है कि फ़ील्ड नाम आईडी प्राथमिक कुंजी और पहचान माना जाता है।
जब ईएफ सम्मिलित कथन उत्पन्न करता है उस क्षेत्र के लिए मूल्य उत्पन्न नहीं करता है।

आप का उपयोग

[DataContract] 
public class Action 
{ 
    [DataMember] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int ID { get; set; } 

    [DataMember] 
    public string ActionName { get; set; } 
} 
संबंधित मुद्दे