我在使用Entity Framework 6更新记录时遇到了一些问题。
public bool UpdateOrder(Order order)
{
Db.Orders.Attach(order);
var entry = Db.Entry(order);
entry.Property(x => x.OrderStatusId).IsModified = true; //Exception thrown
try
{
Db.SaveChanges();
}
catch (Exception e)
{
logger.Fatal(e);
}
return true;
}
这是异常消息:
无法为属性“OrderStatusId”调用成员“IsModified”,因为上下文中不存在“Order”类型的实体。要向上下文添加实体,请调用DbSet的Add或Attach方法。
我尝试将entry.Property(x => x.OrderStatusId).IsModified = true;
更改为entry.State = EntityState.Modified;
但是我的记录没有得到更新。任何想法如何帮助?
道歉,如果这是显而易见的,但我是新手使用EF,我找不到如何解决这个问题。
答案 0 :(得分:3)
我修理了:
public bool UpdateOrder(Order order)
{
using(var db = DB){
db.Orders.Attach(order);
var entry = db.Entry(order);
entry.Property(x => x.OrderStatusId).IsModified = true; //Exception thrown
try
{
db.SaveChanges();
}
catch (Exception e)
{
logger.Fatal(e);
}
return true;
}
}
答案 1 :(得分:0)
异常的原因可能是“order”对象的Id字段(主键)中的默认值。对于int,它为0.在这种情况下,“order”被视为一个新对象,应该使用“add”方法添加。