在EF中使用现有数据库的代码优先出错

时间:2011-09-30 14:32:46

标签: entity-framework-4.1 code-first

我一步一步地遵循Using EF “Code First” with an Existing Database教程,但得到以下错误:

列名称Category_CategoryID

无效

以下是代码摘录:

public class Product
{
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public decimal? UnitPrice { get; set; }
    public bool Discontinued { get; set; }

    public virtual Category Category { get; set; } 
}

public class Category
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
    public string Description { get; set; }
    public byte[] Picture { get; set; }

    public virtual ICollection<Product> Products { get; set; }
}

为什么会发生这种情况

编辑 - 我可以通过在产品类中加入public int CategoryID来完成这项工作,但不知道细节。

1 个答案:

答案 0 :(得分:2)

您需要让EF知道Products.Category是Category.Products的反转。我不确定为什么ScottGu的博客文章中没有显示。

您需要的代码在DbContext子类中是这样的:

protected override void OnModelCreating(ModelBuilder modelBuilder {)
  modelBuilder.Entity<Product>().HasOne(p => p.Category).WithMany(c => c.Products);
}