实体框架虚拟收集导致意外的表

本文关键字:意外 框架 虚拟 实体 | 更新日期: 2023-09-27 18:14:50

我有一个EF对象

public class Country
{
    [Key]
    public string CountryCode { get; set; }
    public string CountryName { get; set; }
}

以及一个通用项:

public class Item
{
    public int ItemID { get; set; }
    public virtual ICollection<Country> AvailableIn { get; set; }
}

生成的Country表包含以下字段:

CountryCode
CountryName 
ItemItemID

我如何告诉EF我希望将关系构建为与ItemAvailableCountry相关的表,而不是修改Country表?

编辑

根据下面的注释,如果我只添加有问题的列,我就包含了相关的迁移代码

    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.AddColumn<int>(
            name: "ItemItemID",
            table: "Country",
            isNullable: true);
        migrationBuilder.AddForeignKey(
            name: "FK_Country_Item_ItemItemID",
            table: "Country",
            column: "ItemItemID",
            principalTable: "Item",
            principalColumn: "ItemID");
    }

因为它可能是相关的-这是在EF7工作

实体框架虚拟收集导致意外的表

如果您想要一个多对多的关系,将Item的iccollection放在国家类上,EF将生成您想要的表