我正在使用以下代码保存一个 Order 对象:
public void SaveOrder (string orderNo)
{
using (var se = new StoreEntities)
{
var order = new Order { OrderNumber = orderNo }
try
{
//// Update
if (se.Orders.Any(e => e.OrderNumber == orderNo))
{
se.Orders.Attach(order);
se.ObjectStateManager.ChangeObjectState(order, EntityState.Modified);
}
//// Create
else
{
se.Orders.AddObject(order);
}
se.SaveChanges();
}
catch (OptimisticConcurrencyException){
se.Refresh(RefreshMode.ClientWins, order);
se.SaveChanges();
}
}
}
当它是一个新订单并且我只是插入数据库时,这很好用。但是,如果我尝试更新现有订单,我会收到他的错误:
由于在商店中找不到以下对象,因此未刷新它们:“EntitySet=Orders;OrderID=0”。
在数据库中,Order 表看起来像
OrderID | OrderNumber
13 567-87
15 567-93
其中 OrderID 是一个身份键。除了这两行之外没有其他行,因为它们已被删除。
我做错了什么,我无法更新记录?