我有一种情况,我想使用代码第一个流畅的配置API在Entity Framework(4.2)中创建一对一的关系,我需要使用链接/映射表来完成它。
这是我的表格布局图。
这就是我所追求的......
HasOptional(x => x.FieldPerson)
.WithOptionalPrincipal()
.Map(map =>
{
map.ToTable("user_account__field_person");
map.MapLeftKey("user_account_id");
map.MapRightKey("field_person_id");
});
......但似乎没有办法做到这一点。
另一种方法是创建我的3个实体,并在适当的时候使用连接自己管理它们。
这是否可能,或者是EF流利API无法处理的情况?
答案 0 :(得分:1)
我将再次回答我自己的问题!
我认为EF代码不会首先处理这种情况,因为链接/地图表的整个概念表明了多对多的关系。
对于我的特殊情况,这是一个数据库优先的情况,我“必须”处理这些表,因为我无法在此阶段更改数据库。
我所做的是首先使用多对多代码配置...
HasMany(t=>t.FieldPersons)
.WithMany(t=>t.UserAccounts)
.Map(map =>
{
map.ToTable("user_account__field_person");
map.MapLeftKey("user_account_id");
map.MapRightKey("field_person_id");
});
...因为我的数据库架构中没有任何内容可以阻止我创建多对多的关系。如果我确实想要这种行为,那么我只需要在每个字段上添加一个唯一约束(EF代码首先不支持)