编辑: 存根实体定义
我有两种实体类型Subscriber和AddOn
它们在数据模型中的定义如下
订阅者(#SubscriberID ,名称,AddOnID)
AddOn( #AddOnID ,名称)
Subscriber 表中的 AddOnID 列引用 AddOn 表中的 AddOnID 列。
我正在尝试更新特定订阅者实体的 AddOn 引用。可以说,我想将 Subscriber#1 的 AddOn 引用更改为 AddOn#5。这是代码:
Subscriber subscriber = new Subscriber { SubscriberID = 1};
AddOn newAddOn = new AddOn { AddOnID = 5};
using (var context = new TestEntities())
{
context.AttachTo("AddOn", newAddOn);
context.AttachTo("Subscriber", subscriber);
subscriber.Name = "dummy";
subscriber.AddOn = newAddOn;
context.SaveChanges();
}
这会在“ context.SaveChanges(); ”行中引发异常
正在从 AssociationSet 'FK-Subscriber-AddOn' 中添加或删除关系。对于基数约束,还必须添加或删除相应的“订阅者”。
当我注释掉“ subscriber.AddOn = newAddOn; ”行时,更新操作工作得很好。
那么,为什么我不能像更新非引用属性一样更新引用属性?
注意:我不知道这是否是正确的方法,但在附加语句之后添加一个“ context.Refresh(RefreshMode.StoreWins,subscriber); ”或“ context.Refresh(RefreshMode.ClietWins,subscriber); ”。
为什么会出现这种行为?