EF将1设置为0..1导航属性会引发异常

时间:2018-07-23 08:35:21

标签: c# entity-framework entity-framework-6 ef-code-first code-first

我有一个模型,其中一个Person 可以关联一个Key,但是一个Key 必须具有{{1} }(层叠),通过以下具有导航属性的代码优先模型进行建模:

Person

但是,当有一个class Key { [Key] public string Code { get; set; } [Required] public virtual Person Person { get; set; } } class Person { [Key] public int ID { get; set; } public virtual Key Key { get; set; } } 实体和一个Person时,用另一个替换Key会引发异常:

Key

带有消息:

  

“ Key_Person” AssociationSet中的关系位于   “已删除”状态。给定多重性约束,相应的   “ Key_Person_Source”也必须处于“已删除”状态。

这没有什么意义:Person person = ctx.People.First(); //ctx loaded with ctx.People.Load(); ctx.Keys.Load() person.Key = new Key () { Code = "Foo" }; ctx.SaveChanges(); //<---exception thrown 处于删除状态(第一句话)?好。我要那个。但是为什么如果我拥有Key属性,却无法将其替换为另一个Key或删除它(第二句话)。
手动删除当前的[Required]是可行的:

Key

但是不是应该使用导航属性来避免首先手动更新DBSet的原因吗?

0 个答案:

没有答案