5

मैं ASP.NET MVC और एफई के लिए नया हूँ उम्मीद है कि यह एक मूर्खतापूर्ण सवालASP.NET MVC/इकाई की रूपरेखा त्रुटि - अमान्य स्तंभ नाम 'Environment_Id'

मैं हो रही है देखने के लिए नहीं है जब मैं मॉडल पारित यह त्रुटि - अपवाद विवरण: System.Data.SqlClient.SqlException: अमान्य कॉलम नाम 'Environment_Id'।

मॉडल और न ही डेटाबेस तालिका उस नाम से एक संपत्ति है। क्या कोई इस पर मुझे मार्गदर्शन कर सकता है?

**Here is the Version Model Class** 

    public partial class Version 
    { 
    public Version() 
    { 
     this.ProfileVersions = new List<ProfileVersion>(); 
     this.ServerInfoes = new List<ServerInfo>(); 
    } 

    public int Id { get; set; } 
    public string Number { get; set; } 
    public string Tag { get; set; } 
    public string Owner { get; set; } 
    public string Approver { get; set; } 
    public string Description { get; set; } 
    public virtual ICollection<ProfileVersion> ProfileVersions { get; set; } 
    public virtual ICollection<ServerInfo> ServerInfoes { get; set; } 
} 

**Profile Version Class** 

public partial class ProfileVersion 
{ 
    public ProfileVersion() 
    { 
     this.PlatformConfigurations = new List<PlatformConfiguration>(); 
    } 

    public int Id { get; set; } 
    public int ProfileId { get; set; } 
    public int EnvironmentId { get; set; } 
    public int VersionId { get; set; } 
    public Nullable<bool> Locked { get; set; } 
    public string LockedBy { get; set; } 
    public string Comments { get; set; } 
    public Nullable<int> Active { get; set; } 
    public virtual Environment Environment { get; set; } 
    public virtual ICollection<PlatformConfiguration> PlatformConfigurations { get; 
                      set; } 
    public virtual PlatformProfile PlatformProfile { get; set; } 
    public virtual Version Version { get; set; } 
} 

**ServerInfo** 
public partial class ServerInfo 
{ 
    public ServerInfo() 
    { 
     this.PlatformConfigurations = new List<PlatformConfiguration>(); 
    } 

    public int Id { get; set; } 
    public string ServerName { get; set; } 
    public int ProfileId { get; set; } 
    public int VersionId { get; set; } 
    public int EnvironmentId { get; set; } 
    public string ServerType { get; set; } 
    public Nullable<short> Active { get; set; } 
    public string Domain { get; set; } 
    public string Location { get; set; } 
    public string IP { get; set; } 
    public string Subnet { get; set; } 
    public string Gateway { get; set; } 
    public Nullable<int> VLan { get; set; } 
    public string DNS { get; set; } 
    public string OS { get; set; } 
    public string OSVersion { get; set; } 
    public string Func { get; set; } 
    public Nullable<short> IISInstalled { get; set; } 
    public string ADDomainController { get; set; } 
    public string ADOrganizationalUnit { get; set; } 
    public string ADGroups { get; set; } 
    public string LastError { get; set; } 
    public Nullable<System.DateTime> LastUpdate { get; set; } 
    public virtual Environment Environment { get; set; } 
    public virtual ICollection<PlatformConfiguration> PlatformConfigurations { get;  
                      set; } 
    public virtual PlatformProfile PlatformProfile { get; set; } 
    public virtual Version Version { get; set; } 
    public virtual VMConfiguration VMConfiguration { get; set; } 
} 

**Controller Code-** 

public ViewResult Index(string id) 
    { 

     var profileVerList = from ver in _context.Versions 
           where !(from pfv in _context.ProfileVersions 
            select pfv.VersionId).Contains(ver.Id) 
           select ver; 

     var bigView = new BigViewModel 
     { 
      VersionModel = profileVerList.ToList(),     
     }; 

     return View(model: bigView); 
    } 


**In the View where the exception is thrown** 

@Html.DropDownList(
      "SelectedVersionID", 
      new SelectList(
       Model.VersionModel.Select(x => new { Value = x.Id, Text = x.Number}), 
       "Value", 
       "Text" 
       ) 
      ) 
+1

क्या प्रोफ़ाइल वर्जन या सर्वरइन्फो में पर्यावरण की संपत्ति है? –

+0

हां- वे सार्वजनिक int पर्यावरण आईडी {प्राप्त करें; सेट; } @ ओलाव Nybø – user2696668

+0

.... @ Olav Nybø – user2696668

उत्तर

10

अपने ProfileVersion और ServerInfo संस्थाओं में आप एक Environment नेविगेशन संपत्ति है। डिफ़ॉल्ट रूप से, इकाई फ्रेमवर्क [Property Name]_[Referenced class PK] नामक डेटाबेस कॉलम बनाने का प्रयास करेगा। आपके परिदृश्य में, यह Environment_Id है। समस्या, अभी, यह है कि आपने इस डेटाबेस कॉलम को बनाने के लिए माइग्रेशन नहीं किया है।

अगर मैं मैं कहना चाहता हूँ आप पहली बार EnvironmentId गुणों के साथ कक्षाओं बनाया कल्पना करना कि यहां क्या हुआ था, चले गए, फिर बाद में एफई उम्मीद संबद्ध करने के लिए है कि अपने मौजूदा EnvironmentId साथ नेविगेशन गुण, प्रत्येक के लिए Environment जोड़ने का निर्णय लिया, गुण। यही वह जगह है जहां आप गलत हो गए थे। जैसा कि मैंने ऊपर कहा, एफई सम्मेलन Environment_Id नाम के एक डेटाबेस स्तंभ देखने के लिए है, तो आप एफई बजाय EnvironmentId उपयोग करना चाहते हैं, तो आप सिर्फ यह ForeignKey डेटा एनोटेशन के साथ इतना बताने के लिए की जरूरत है:

[ForeignKey("Environment")] 
public int EnvironmentId { get; set; } 
+0

मैंने ProfileVersion और ServeInfo में EnvironmentId प्रॉपर्टी के लिए विदेशी कुंजी डेटा नोटेशन जोड़ा लेकिन अभी भी एक ही समस्या है .. @ क्रिस प्रैट – user2696668

+0

क्या आपकी तालिका में 'EnvironmentId' कॉलम डेटाबेस में एक विदेशी कुंजी के रूप में सेट है स्तर? –

0

मेरे मामले में मैंने उसी कुंजी के लिए मेरा प्राथमिक कुंजी संबंध जोड़ा है .. इसलिए मैंने बस हटा दिया है ..

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