如何使用具有流畅配置的地图/链接表首先在EF代码中创建一对一关系

时间:2012-01-19 17:05:07

标签: entity-framework ef-code-first fluent-interface

我有一种情况,我想使用代码第一个流畅的配置API在Entity Framework(4.2)中创建一对一的关系,我需要使用链接/映射表来完成它。

这是我的表格布局图。

1-to-1 relationship with link table

这就是我所追求的......

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无法处理的情况?

1 个答案:

答案 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代码首先不支持)