我有一个模型,其中一个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的原因吗?