C# 实体框架更新记录问题(无法为属性调用成员已修改)
我在使用Entity Framework 6更新记录时遇到一些问题C# 实体框架更新记录问题(无法为属性调用成员已修改),c#,entity-framework,C#,Entity Framework,我在使用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
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)代码>到entry.State=EntityState.Modified代码>
但是我的记录没有更新。有什么办法可以帮忙吗
如果这是显而易见的,我很抱歉,但我对使用EF还不熟悉,我找不到解决方法。异常的原因可能是“订单”对象的Id字段(主键)中的默认值。对于int,它是0。在这种情况下,“订单”被视为一个新对象,应使用“添加”方法添加。我通过以下方法修复了它:
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;
}
}
看到我的答案了吗@JamieR这根本没道理。这里面一定还有别的东西。