2011-01-05 13 views
5

"ईएफ-कोड फर्स्ट" के साथ काम करते समय मुझे मॉडल वैलिडेशन अपवाद (नीचे) मिलता है। यह मुझे एक कुंजी परिभाषित करने के लिए चाहता है, लेकिन मुझे यकीन है कि वास्तव में क्या इसका मतलब है कि नहीं कर रहा हूँ ..."ईएफ-कोड फर्स्ट" के साथ काम करते समय मैं कुंजी को कैसे परिभाषित करूं?

public class Unit 
{ 
    Guid id; 
    String public_id; 
    String name;   
    bool deleted; 
} 

public class MyDataContext : DbContext 
{ 
    public DbSet<Unit> Units { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Unit>().ToTable("sometable"); 
    } 
} 

[TestFixture] 
public class DataTests 
{ 
    [Test] 
    public void Test() 
    { 
     MyDataContext database = new MyDataContext(); 
     var o = database.Units; 


     Console.WriteLine(o.Count()); // This line throws! 
     Assert.IsTrue(true); 
    } 
} 

System.Data.Entity.ModelConfiguration.ModelValidationException: मॉडल पीढ़ी के दौरान एक या अधिक सत्यापन त्रुटियों का पता चला गया:

सिस्टम.डाटा.एडएम.एडएमइन्टिटी टाइप: एंटीटी टाइप 'यूनिट' की कोई कुंजी परिभाषित नहीं है। इस EntityType के लिए कुंजी परिभाषित करें।

System.Data.Edm.EdmEntitySet: EntityType: EntitySet Units टाइप यूनिट पर आधारित है जिसमें कोई कुंजी परिभाषित नहीं है।

उत्तर

3

आपको उन सभी फ़ील्ड के लिए निजी स्थानीय चर नहीं, जिन्हें आप चाहते हैं, के लिए डेटाबेस फ़ील्ड बनाने के लिए गुणों का उपयोग करने की आवश्यकता है।

सार्वजनिक मार्गदर्शिका आईडी {प्राप्त करें; सेट;}

8

अपने क्षेत्रों गुण, फिर इस तरह [Key] विशेषता का उपयोग:

[Key] 
public Guid MyId { get; set; } 

आप आयात System.ComponentModel.DataAnnotations संदर्भित करने के लिए और KeyAttribute प्राप्त करना होगा। More info can be found here

+1

ईएफ स्वचालित रूप से प्रत्यय "आईडी" के साथ गुणों को वर्गीकृत करेगा (लोअरकेस 'डी' को चाबियों के रूप में नोट करें)। खेतों के रूप में मैन्युअल रूप से जिम्मेदार बनाने के बजाय सम्मेलन का पालन करना सबसे अच्छा है। – Charlie

0

[कुंजी] का उपयोग किए बिना यदि आप अपने कॉलम नाम का उपयोग सार्वजनिक ग्रिड यूनिट आईडी {प्राप्त करें; सेट; } फिर ईएफ इस कॉलम को कुंजी कॉलम के रूप में मानता है।

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

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