实体框架更新记录问题(不能为属性调用成员“IsModified”)

Jam*_*ees 3 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
        {
            Db.SaveChanges();
        }
        catch (Exception e)
        {
            logger.Fatal(e);
        }
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

这是异常消息:

无法为属性“OrderStatusId”调用成员“IsModified”,因为上下文中不存在“Order”类型的实体。要将实体添加到上下文,请调用 DbSet 的 Add 或 Attach 方法。

我尝试更改entry.Property(x => x.OrderStatusId).IsModified = true;为entry.State = EntityState.Modified; 但我的记录没有得到更新。任何想法如何提供帮助?

抱歉,如果这很明显,但我是使用 EF 的新手,我找不到如何解决这个问题。

Jam*_*ees 5

我通过以下方式修复它:

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;
}
        }
Run Code Online (Sandbox Code Playgroud)