Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Fluent API与静态表的一对多关系_Sql_Entity Framework_Dbcontext_Fluent_Ef Fluent Api - Fatal编程技术网

Sql Fluent API与静态表的一对多关系

Sql Fluent API与静态表的一对多关系,sql,entity-framework,dbcontext,fluent,ef-fluent-api,Sql,Entity Framework,Dbcontext,Fluent,Ef Fluent Api,我需要帮助。 我有三个静态表(国家、地区和城市字典)。我在Initilizer类中设置了这些表。 我需要用我自己的用户表创建一对多关系,而不需要通过fluentapi在字典表中创建Foregion键 字典表(国家、地区和城市): 我的用户表: 公共类用户工作者 { 公共用户工作者() { 国家=新名单(); 区域=新列表(); 城市=新列表(); 职业=新列表(); } public int UserWorkerId{get;set;} 公共虚拟ICollection国家{get;set;}

我需要帮助。 我有三个静态表(国家、地区和城市字典)。我在Initilizer类中设置了这些表。 我需要用我自己的用户表创建一对多关系,而不需要通过fluentapi在字典表中创建Foregion键

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

我的用户表:

公共类用户工作者
{
公共用户工作者()
{
国家=新名单();
区域=新列表();
城市=新列表();
职业=新列表();
}
public int UserWorkerId{get;set;}
公共虚拟ICollection国家{get;set;}
公共虚拟ICollection区域{get;set;}
公共虚拟ICollection城市{get;set;}
公共虚拟ICollection{get;set;}
}
如何在没有UserWorker\u UserWorkerId的情况下添加关系?

另外,我还有两个我自己的表,需要通过fluentapi通过相同的关系一对多连接


我不明白如何将对象字典列表添加到自己的表中,而不在静态表中创建虚拟foregion键

如果一个用户可以拥有多个城市,并且同一个城市可以分配给多个用户,这是一种多对多关系

您可以在ModelBuilder中对此进行如下配置:

ModelBuilder.Entity<UserWorker>()
   .HasMany(u => u.Cities)
   .WithMany()
   .Map(x => {
        x.MapLeftKey("UserWorkerId");
        x.MapRightKey("CityId");
        x.ToTable("UserWorkerToCityMap");
   });
ModelBuilder.Entity()
.HasMany(u=>u.Cities)
.有很多
.Map(x=>{
x、 MapLeftKey(“UserWorkerId”);
x、 MapRightKey(“CityId”);
x、 ToTable(“UserWorkerToCityMap”);
});
EF将为此关系创建一个附加表
UserWorkerToCityMap
,该表有两列,外键引用了
UserWorkerId
CityId
。不会向DCity添加其他外键列


谢谢您的回复。我考虑过这个选项,但是如果我有一个用户表和另一个具有相同关系的表?使用-->城市、国家、地区和其他-->城市、国家、地区的用户?Than我需要两个表多对多?没问题,只需为映射表创建两个具有不同名称的关系,例如
UserWorkerToCityMap
OtherToCityMap
,我将有6个映射表:3个映射表用于用户(UserToCityMap、UserToRegionMap、UserToCountriesMap),3个映射表用于另一个自己的表。对吗?没错。但这些表不会占用太多空间,因为它们只包含外键。您可以对联接表进行建模,并使用两个一对多关系,而不是一对多(多对多始终由EF内部管理)。看见