【发布时间】:2009-10-02 17:34:36
【问题描述】:
我有两种实体类型 Subscriber 和 AddOn
它们在数据模型中的定义如下
订阅者(#SubscriberID,Name,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);" 后附加语句使事情正常进行。
为什么会这样?
【问题讨论】:
标签: c# entity-framework reference relation