我想我可以在不必定义类的情况下说明这个问题,因为除了外键和导航属性之外的实际结构似乎没有任何影响。
在我的派生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属性的情况下瘫痪?