数据库未更新

时间:2013-09-16 15:52:59

标签: c# entity-framework

我刚刚开始使用Entity,到目前为止,它让我的生活变得更加轻松。但是,当我尝试更新一行时,这就是我遇到问题的地方。谷歌搜索带我到Attach(),我试过了:

public void Update()
{
    using (var context = new HDDCContainer())
    {
        context.Projects.Attach(this);
        context.SaveChanges();
    }
}

这是我的Project类中的方法。

然而,在查询我的数据库之后,我发现它实际上没有更新。我没有得到任何错误或例外。当我单步执行时,我可以看到我所做的项目的更改。

2 个答案:

答案 0 :(得分:2)

您必须在附加附后对实体进行更改。

例如

context.Projects.Attach(project);

project.Name = "New Funky Name";

context.SaveChanges();

如果按照您的示例在实例之外修改实体,则可能需要手动标记状态。

context.Projects.Attach(project);
DbEntityEntry entry = context.Entry(day);       // Gets the entity Entry instance
entry.Property("Name").IsModified = true;       // Individual property modified
entry.State = System.Data.EntityState.Modified; // or Entire object modified

答案 1 :(得分:2)

您需要告诉实体框架工作,您刚刚附加的对象的状态与数据库中的值相比已经更改,您只需修改条目的状态,如下所示:

            db.Favorites.Attach(favorite);
            var ent = db.Entry(favorite);
            ent.State = EntityState.Modified;   
            db.SaveChanges();

以前有它,让我知道