我需要帮助。 我有三个静态表(国家,地区和城市词典)。我在Initilizer类中设置了这个表。 我需要使用我自己的User表创建一对多关系,而不用Fluent API在字典表中创建Foregion Key。
字典表(国家,地区和城市):
我的用户表:
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:我还有另外两张我自己的桌子需要通过Fluent API以相同的关系连接一对多。
我不明白如何在我的静态表中创建虚拟foregion密钥时,如何将对象字典列表添加到我自己的表中。
答案 0 :(得分:1)
如果单个用户可以拥有多个城市,并且可以将同一城市分配给多个用户,则这是一种多对多关系。
您可以在模型构建器中对其进行如下配置:
ModelBuilder.Entity<UserWorker>()
.HasMany(u => u.Cities)
.WithMany()
.Map(x => {
x.MapLeftKey("UserWorkerId");
x.MapRightKey("CityId");
x.ToTable("UserWorkerToCityMap");
});
EF将为此关系创建一个附加表UserWorkerToCityMap
,该表包含两列,其中包含对UserWorkerId
和CityId
的外键引用。不会向DCity添加额外的外键列。