我一步一步地遵循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
来完成这项工作,但不知道细节。
答案 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);
}