Fluent API 与静态 table 的一对多关系

Fluent API One to Many relation with static table

我需要帮助。 我有三个静态 table(国家、地区和城市词典)。我在我的 Initilizer class 中设置了这个 tables。 我需要与我自己的用户 table 创建一对多关系,而无需在 Fluent API.

的词典 table 中创建 Foregion 键

词典表(国家、地区和城市):

我的用户table:

public class UserWorker
{
  public UserWorker()
    {
        Countries = new List<DCountry>();
        Regions = new List<DRegion>();
        Cities = new List<DCity>();
        Professions = new List<DProfession>();
    }

    public int UserWorkerId { get; set; }

    public virtual ICollection<DCountry> Countries { get; set; }

    public virtual ICollection<DRegion> Regions { get; set; }

    public virtual ICollection<DCity> Cities { get; set; }

    public virtual ICollection<DProfession> Professions { get; set; }
}

如何在没有 UserWorker_UserWorkerId 的情况下添加关系?

P.S:我还有另外两个 table 需要通过 Fluent API.

的相同关系一对多连接

我不明白如何在不在我的静态 table 中创建虚拟 foregion 密钥的情况下将对象字典列表添加到我自己的 table。

如果一个用户可以有多个城市,同一个城市可以分配给多个用户,这是many-to-many关系。

您可以在模型构建器中进行如下配置:

ModelBuilder.Entity<UserWorker>()
   .HasMany(u => u.Cities)
   .WithMany()
   .Map(x => {
        x.MapLeftKey("UserWorkerId");
        x.MapRightKey("CityId");
        x.ToTable("UserWorkerToCityMap");
   });

EF 将为此关系创建一个额外的 table UserWorkerToCityMap,该关系有两列外键引用 UserWorkerIdCityId。不会向 DCity 添加额外的外键列。

Configure Many-to-Many Relationship in Code-First