一对多的关系并没有达到我所期望的

问题描述

在一个产品可以有多个类别的情况下,我尝试使用代码优先来创建它,我有一个产品模型,其中包含一个像这样的类别集合:

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

    public string Name { get; set; }

    public ICollection<Category> Categories { get; set; }
}

我的类别看起来像:

public class Category
{
    public Category(CategoryEnum @enum)
    {
        Id = (int)@enum;
        Name = @enum.ToString();
    }

    public Category() { }

    [Key,DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }

    public string Name { get; set; }

    public static implicit operator Category(CategoryEnum @enum) => new Category(@enum);

    public static implicit operator CategoryEnum(Category category) => (CategoryEnum)category.Id;

}

创建迁移然后更新数据库不会为此创建一个新表来将 2(产品和类别)连接在一起。我希望有一个带有 ProductIdCategoryId 的新表,但事实并非如此。相反,它只是在 Category 表中创建一个 ProductId

如何让 EF 创建一个将这两个连接在一起的表,而无需创建新的 DbSet<T>

解决方法

应该是这样的。
示例:
产品 1 鸡肉
类别 1 肉类 idProduct = 1
类别 2 健康 idProduct = 1

等等...
对于一对多的关系,您不需要另一个表。表格只对多对多有用

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...