脚手架时表中已存在关键因素

时间:2016-02-15 09:54:03

标签: c# asp.net-mvc entity-framework visual-studio-2015

我正在做一个code first示例,基本上我有ProductsCategories

分类模型如下:

public class Category
{
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
}

Product模型如下:

public class Product
{
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public string Description { get; set; }

    [Required]
    public decimal Price { get; set; }

    [Required]
    public int Stock { get; set; }

    public string ImageName { get; set; }

    //Category Navigation
    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

当我尝试使用Controller使用Web API 2 Controller with actions创建Entity Framework scaffold时,我收到错误消息:

  

运行所选代码生成器时出错:'Key已经存在   存在于表'

我怀疑它是Category模型的Product导航部分,因为没有该代码,脚手架就可以工作。

我做错了什么?我试图将其创建为虚拟财产,但我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:8)

您需要在DbContext中添加Model类

    public DbSet<Product> Products{ get; set; }
    public DbSet<Category> Categories{ get; set; }

现在你可以做脚手架了。

This问题也有助于更好地理解