C# mvc 5中的“{”无效列名'Supplier_Address_Address_ID'。”}

C# mvc 5中的“{”无效列名'Supplier_Address_Address_ID'。”},c#,entity-framework,C#,Entity Framework,我得到了上面的信息,我可以看到错误在哪里,这里是代码,我是MVC新手,请帮助 {列名称“供应商地址地址ID”无效。} public class Supplier { [Key] public int SupplierID { get; set; } //[Required] //[StringLength(20, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLeng

我得到了上面的信息,我可以看到错误在哪里,这里是代码,我是MVC新手,请帮助 {列名称“供应商地址地址ID”无效。}

public class Supplier
{
    [Key]
    public int SupplierID { get; set; }

    //[Required]
    //[StringLength(20, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)]
    [Required(ErrorMessage = "Company Name is required")]
    [DisplayName("Company Name ")]
    public string Company_Name { get; set; }

    [Required(ErrorMessage = "First Name is required")]
    [DisplayName("First Name")]
    public string Supplier_Name { get; set; }

    [Required(ErrorMessage = "Surname Name is required")]
    [DisplayName("Surname Name")]
    public string Supplier_Last { get; set; }

    [DisplayName("Title")]
    public string Title { get; set; }

    [DisplayName("Address")]
    //[ForeignKey("Address_ID")]
    public int? Address_ID { get; set; }

    [DisplayName("Contact")]
    public int? Details_ID { get; set; }

    [Display(Name = "Full Name")]
    public string FullName
    {
        get
        {
            return Supplier_Name + ", " + Supplier_Last;
        }
    }

    public virtual Supplier_Address Supplier_Address { get; set; } 
}

public class Supplier_Address
{
    // [ForeignKey("Supplier")]
    [Key]
    public int Address_ID { get; set; }

    [Required(ErrorMessage = "Address Name is required")]
    [DisplayName("Address")]
    public string Address_1 { get; set; }

    [DisplayName("        ")]
    public string Address_2 { get; set; }

    [Required(ErrorMessage = "Country is required")]
    public string Country { get; set; }

    [Required(ErrorMessage = "City is required")]
    public string City { get; set; }

    [Required(ErrorMessage = "State is required")]
    public string State { get; set; }

    [Required(ErrorMessage = "Pcode is required")]
    public int? Pcode { get; set; }

    public virtual Supplier Supplier { get; set; }
}
这是我的控制器

public DbSet<Supplier> Suppliers { get; set; }
public DbSet<Supplier_Address> Supplier_Addresses { get; set; }

protected override void  OnModelCreating(DbModelBuilder modeBuilder)
{
    // this the  Suppler and  Address
    modeBuilder.Entity<Supplier>()
        .HasOptional(s => s.Supplier_Address)
        .WithMany();

    modeBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    base.OnModelCreating(modeBuilder);
这是错误消息:

{列名称“供应商地址地址ID”无效。}

public class Supplier
{
    [Key]
    public int SupplierID { get; set; }

    //[Required]
    //[StringLength(20, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)]
    [Required(ErrorMessage = "Company Name is required")]
    [DisplayName("Company Name ")]
    public string Company_Name { get; set; }

    [Required(ErrorMessage = "First Name is required")]
    [DisplayName("First Name")]
    public string Supplier_Name { get; set; }

    [Required(ErrorMessage = "Surname Name is required")]
    [DisplayName("Surname Name")]
    public string Supplier_Last { get; set; }

    [DisplayName("Title")]
    public string Title { get; set; }

    [DisplayName("Address")]
    //[ForeignKey("Address_ID")]
    public int? Address_ID { get; set; }

    [DisplayName("Contact")]
    public int? Details_ID { get; set; }

    [Display(Name = "Full Name")]
    public string FullName
    {
        get
        {
            return Supplier_Name + ", " + Supplier_Last;
        }
    }

    public virtual Supplier_Address Supplier_Address { get; set; } 
}

public class Supplier_Address
{
    // [ForeignKey("Supplier")]
    [Key]
    public int Address_ID { get; set; }

    [Required(ErrorMessage = "Address Name is required")]
    [DisplayName("Address")]
    public string Address_1 { get; set; }

    [DisplayName("        ")]
    public string Address_2 { get; set; }

    [Required(ErrorMessage = "Country is required")]
    public string Country { get; set; }

    [Required(ErrorMessage = "City is required")]
    public string City { get; set; }

    [Required(ErrorMessage = "State is required")]
    public string State { get; set; }

    [Required(ErrorMessage = "Pcode is required")]
    public int? Pcode { get; set; }

    public virtual Supplier Supplier { get; set; }
}

这是一个实体框架问题 EntityFramework默认代码第一个db生成非常受约定驱动。您应该将ForeignKey与引用对象一起保存,并且应该将相应的Id作为Id提及

[DisplayName("Address_ID")]
public int? Address_ID { get; set; }
public virtual Supplier_Address Supplier_Address { get; set; }
有了这个特别的改变,我可以让事情正常进行,并生成了表

ForeignKey属性值应为属性名称的Supplier\u Address,而不是Address\u ID。此外,Supplier\u Address应包含Supplier\u ID,以便可以向后遍历。