原文:
modelBuilder.Entity<NewspaperGroupDepartment>() //1:n 一个部门:多个子部门
.HasMany(t => t.ChildNewspaperGroupDepartment)
//.WithOptional(t => t.ParentNewspaperGroupDepartment)
.WithRequired(t => t.ParentNewspaperGroupDepartment)
.HasForeignKey(t => t.ParentId).WillCascadeOnDelete(false);
One or more validation errors were detected during model generation:
xxxxx: : Multiplicity conflicts with the referential constraint in Role 'NewspaperGroupDepartment_ChildNewspaperGroupDepartment_Source' in relationship 'NewspaperGroupDepartment_ChildNewspaperGroupDepartment'. Because all of the properties in the Dependent Role are non-nullable,
multiplicity of the Principal Role must be '1'.
在模型生成过程中检测到一个或多个验证错误:
NewspaperGroupAuthorityItem_NewspaperGroup_Target_NewspaperGroupAuthorityItem_NewspaperGroup_Source:依赖作用的所有属性的类型必须与相应的引用约束属性类型的主要角色。属性的类型“NewspaperGroupId”实体“NewspaperGroupAuthorityItem”属性的类型不匹配“代码”实体“NewspaperGroup”引用约束“NewspaperGroupAuthorityItem_NewspaperGroup”。xxx.NewspaperGroupDepartment_ChildNewspaperGroupDepartment::角色的多重性与引用约束冲突“NewspaperGroupDepartment_ChildNewspaperGroupDepartment_Source”“NewspaperGroupDepartment_ChildNewspaperGroupDepartment”的关系。因为从属角色中的所有属性都是非空的,主角色的多重性必须是'1'。
具体解决方法: 将当前关系字段 数据类型改为 可空类型 , 将WithOptional 换成:WithRequired 或者反过来试下: 具体原理还不是太明白 有大神知道的可以 解释下 共同探讨下
Has方法:
-
HasOptional:前者包含后者一个实例或者为null
-
HasRequired:前者(A)包含后者(B)一个不为null的实例
-
HasMany:前者包含后者实例的集合
With方法:
-
WithOptional:后者(B)可以包含前者(A)一个实例或者null
-
WithRequired:后者包含前者一个不为null的实例
-
WithMany:后者包含前者实例的集合