1

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

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

这是我的 Project 类中的一种方法。

但是,在查询我的数据库后,我发现它实际上并没有更新。我没有得到任何错误或异常。当我逐步完成时,我可以看到我对项目所做的更改。

4

2 回答 2

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
于 2013-09-16T15:56:43.500 回答
2

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

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

以前有过,让我知道

于 2013-09-16T15:57:54.717 回答