我首先处理代码.NET 4,我遇到了与1对1关系的问题。
简化数据库: -POccurrence -id
-POccurrenceRiskAssessment -OccurrenceId
在我的班级Poccurrence我有一个名为RiskAsessment的属性,类型为POccurrenceRiskAssessment。并非所有的事件都有风险评估,因此它需要可以为空。 我试过了
modelBuilder.Entity<POccurrence>().HasOptional(item => item.RiskAssessment).HasConstraint((o, r) => r.OccurrenceId == o.Id);
但是这给了我
导航属性 在类型上声明'RiskAssessment' 'AM.Pris.Classes.POccurrence'一直都是 配置为可选。基于 声明约束,导航 物业是必需的。要么做一些 依赖关键属性可空或 根据需要配置导航。
如果我尝试
modelBuilder.Entity<POccurrence>().HasRequired(item => item.RiskAssessment).HasConstraint((o, r) => r.OccurrenceId == o.Id);
我得到了
参照完整性约束 发生违规:主键 作为参考的一部分的财产 完整性约束无法更改 当依赖对象不变时 除非它被设置为 协会的主要对象。该 必须跟踪主要对象 没有标记为删除。
我不知道该怎么做。我甚至试图删除数据库中的真实关系,但似乎没有任何区别。任何的想法?我猜它是我正在寻找的第一次尝试HasOptional,但我如何让它成为nullalbe?
答案 0 :(得分:0)
您是否考虑过将其转换为每种类型的表继承方案,其中POccurrenceRiskAssessment:POccurrence?这样你只需要查询POccurrenceRiskAssessment。