C# 实体框架更新记录问题(无法为属性调用成员已修改)

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

我在使用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)
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这根本没道理。这里面一定还有别的东西。