实体框架6.x代码优先0..1:没有显式FK属性的许多映射 - 它可以完成吗?

时间:2016-04-12 18:37:40

标签: c# entity-framework ef-code-first entity-framework-6

我想我可以在不必定义类的情况下说明这个问题,因为除了外键和导航属性之外的实际结构似乎没有任何影响。

在我的派生EntityTypeConfiguration类中,如果我想要一个没有定义FK属性的1-many关系,Entity Framework将允许我这样做:

HasRequired(r => r.Foo)
    .WithMany(); //No explicit foreign key property, navigation property only

如果我想要0..1-many关系,我可以使用显式可空的FK属性,例如public int? Foo_Id {get; set;}

HasOptional(r => r.Foo)
    .WithMany()
    .HasForeignKey(r=>r.Foo_Id); //Nullable explicit foreign key property and navigation property

但我不能配置0..1-many关系而没有明确定义的FK属性,就像我可以使用1-many关系一样:

HasOptional(r => r.Foo)
    .WithMany(); ////No explicit foreign key property, navigation property only, causes runtime error

我在上一个例子中收到的错误类似于:

  

多重性与角色' Bar_Foo_Target'中的参照约束冲突。在关系' Bar_Foo'。由于从属角色中的所有属性都是不可为空的,因此主要角色的多样性必须为' 1'。

似乎很明显错误与映射不匹配。我知道如果你试图配置一个0..1-many关系,FK属性不可为空,这会弹出来,但这不是这种情况,因为没有在类上定义FK属性

我错过了什么吗?这是一个错误吗?为什么我可以配置1-many关系并且EF成功地推断出FK,但是在0..1-many上,它在我的班级没有明确定义的可空FK属性的情况下瘫痪?

0 个答案:

没有答案