基架时,表中已存在键

本文关键字:存在 | 更新日期: 2023-09-27 18:34:47

我正在做一个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; }
}

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

运行选定的代码生成器时出错:"密钥已 存在于表中'

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

我做错了什么?我尝试将其创建为虚拟属性,但仍然遇到相同的错误。

基架时,表中已存在键

您需要在 DbContext 中添加模型类

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

现在你可以做脚手架了。

这个问题也将有助于更好地理解