必须要求具有非可空复合键的许多可选项

时间:2015-05-20 09:00:37

标签: c# entity-framework db2 entity-framework-6 composite-key

我在只读数据库中遇到了一些已记录实体的问题。 其中,我读了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中的错误,因为所有相关表中都必须存在所有复合键组合? 或者我会错过什么?

0 个答案:

没有答案