2012-01-25 11 views
30

मुझे मिलता है: त्रुटि: अवैध कॉलम नाम 'संगठन संरचना_आईडी'।इकाई फ्रेमवर्क: अवैध कॉलम नाम 'संगठन संरचना_आईडी'

public OrganizationStructure() 
    { 
     ChildrenItems = new HashSet<OrganizationStructure>(); 
     InputDate = DateTime.Now; 
    } 

    public int ID { get; set; } 
    public string Name { get; set; } 

    public virtual int? ParentID { get; set; } 
    public int OrganizationID { get; set; } 
    public int OrganizationTypeID { get; set; } 
    public int OrganizationActivityID { get; set; } 
    public int OrganizationLocationID { get; set; } 

    public string AddRemark { get; set; } 
    public int UserId { get; set; } 
    public DateTime InputDate { get; set; } 
    public int? RemAttr { get; set; } 

    public virtual ICollection<OrganizationStructure> ChildrenItems { get; set; } 

सूचकांक कार्रवाई:

return View(_organizationStructureRepository.GetAll().ToList() 
      .Where(t => t.ParentID == null)); 
+0

'संगठन संरचना' एक इकाई है (ईएफ से?) आपको क्या अपवाद है? – gideon

+1

ईएफ, अपवाद: अमान्य कॉलम नाम 'संगठन संरचना_आईडी' –

+2

कुछ बिंदु पर {entity} आईडी से {entity} _ID में स्वचालित स्वचालित कुंजी नाम बदल दिया गया है। ईएफ 5 शायद। –

उत्तर

37

है ऐसा इसलिए है क्योंकि आप एक नेविगेशन संपत्ति के साथ अपने FK संपत्ति जोड़ी नहीं किया। मुझे उम्मीद है कि ParentID को माता-पिता OrganizationStructure और ChildrenItems को इंगित करना चाहिए OranizationStructures बच्चों को इंगित करना चाहिए।

अपने मॉडल माता पिता OrganizationStructure को Parent नेविगेशन संपत्ति आप धाराप्रवाह-एपीआई का उपयोग करना चाहिए एफई बताने के लिए कि ParentID FK है शामिल नहीं है:

modelBuilder.Entity<OrganizationStructure>() 
      .HasMany(o => o.ChildrenItems) 
      .WithOptional() 
      .HasForeignKey(c => c.ParentID); 
+3

कोई यह कोड कहां रखता है? –

+3

@ बुमहौयर: अपने व्युत्पन्न 'डीबीकॉन्टेक्स्ट' वर्ग में 'ऑनमोडेल क्रिएटिंग' विधि को ओवरराइड करें और वहां सभी मैपिंग डालें। एक अन्य विकल्प 'EntityTypeConfiguration' व्युत्पन्न वर्ग का उपयोग करना है और इसे' ऑनमोडेल क्रिएटिंग 'में पंजीकृत करना है। –

+0

मुझे लगता है कि इस मॉडल की देखभाल करने वाले मॉडल के लिए एक विदेशीकी एटिबूट कैसे जोड़ना है। लेकिन धन्यवाद –

3

मुझे क्या पता लगा लिया है कि आप एक ICollection है जब कि एक तालिका का संदर्भ देता है और कोई स्तंभ नहीं है जिसे यह पता लगाया जा सकता है, यह टेबल के बीच कनेक्शन बनाने का प्रयास करने के लिए आपके लिए एक बनाता है। यह विशेष रूप से आईसीओलेक्शन के साथ होता है और मुझे इसे "बैटी" को समझने की कोशिश कर रहा है।

3

मेरे पास एक समान समस्या थी, सार्वजनिक वर्चुअल आईसीलेक्शन की अवांछित प्रविष्टि को हटाकर, हल किया गया।

+0

आप दा आदमी ... पिछले 60 मिनट के लिए मुझे bugging – Tosh

+0

वही यहाँ, यह मुझे तब तक मार डाला जब तक मुझे यह नहीं मिला – stillsmallvoice

1

यह भी हो सकता है यदि आप बच्चे के क्षेत्र में संदर्भ क्षेत्र को सरल क्षेत्र के रूप में घोषित करते हैं, लेकिन संपत्ति नहीं!

int ParentId //will be ignored; 

int ParentId {get; set;} // it'ok (but could be ignored 
         //if the parent entity name isn't 'Parent'); 

[ForeignKey("MyParentEntity")] 
int ParentId {get; set;} // is the best way (or use fluent-api) 
संबंधित मुद्दे