EF6 Code First配置一对一关系时出现validation error如何解决?
问题原因
你已正确将Sfe的主键Id标记为指向Exercice的外键,但EF6无法自动识别两端的主从关系,缺少必填标记确认Sfe为依赖端,所以触发多重性校验报错。
解决方案
仅需在Sfe的Exercice导航属性上添加[Required]特性即可,修改后代码如下:
public class Exercice { public int Id { get; set; } public virtual Sfe Sfe { get; set;} } public class Sfe { [ForeignKey("Exercice")] public int Id { get; set; } [Required] public virtual Exercice Exercice { get; set; } }
补充说明
- 加
[Required]后EF会明确Sfe必须关联一个已存在的Exercice,满足依赖端多重性上限为1的校验规则。 - 如果你需要实现严格的一对一(即
Exercice也必须关联Sfe),在Exercice的Sfe导航属性上也添加[Required]即可。 - 如果你需要实现
Exercice可以不关联Sfe的1对0/1关系,用上面的代码即可,不需要额外修改。
内容的提问来源于stack exchange,提问作者jordy robson
相关产品推荐
相关产品推荐

