我在只读数据库中遇到了一些已记录实体的问题。 其中,我读了4个表,EntityOne,EntityTwo,EntityOneLogged和EntityTwoLogged。
EntityOne有一个由3部分组成的复合键,KeyString1,KeyString2,KeyString3
EntityTwo有一个由4部分组成的复合键,KeyString1,KeyString2,KeyString3,KeyString4
EntityOne与EntityTwo有一对多的关系
这可行并且映射如下:
HasRequired(r => r.EntityOne).WithMany(m => m.EntityTwos).HasForeignKey(f => new { f.KeyString1, f.KeyString2, f.KeyString3 });
EntityOneLogged有一个由4部分组成的复合键,KeyString1,KeyString2,KeyString3,ActionTime
EntityTwoLogged有一个由5部分组成的复合键,KeyString1,KeyString2,KeyString3,KeyString4,ActionTime
EntityOneLogged与EntityTwo有多对多的关系(不可映射)
记录的表可以包含正常表中删除的行
问题从这里开始,当我想将0..1映射到EntityTwoLogged到EntityOne的许多
HasOptional(r => r.EntityOne).WithMany(m => m.EntityTwoLogs).HasForeignKey(f => new { f.KeyString1, f.KeyString2, f.KeyString3 });
此验证失败,出现以下错误:
One or more validation errors were detected during model generation: EntityTwoLogged_EntityOne: : Multiplicity conflicts with the referential constraint in Role 'EntityTwoLogged_EntityOne_Target' in relationship 'EntityTwoLogged_EntityOne'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be '1'.
我将其解释为EF中的错误,因为所有相关表中都必须存在所有复合键组合? 或者我会错过什么?