我刚刚开始使用Entity,到目前为止,它让我的生活变得更加轻松。但是,当我尝试更新一行时,这就是我遇到问题的地方。谷歌搜索带我到Attach()
,我试过了:
public void Update()
{
using (var context = new HDDCContainer())
{
context.Projects.Attach(this);
context.SaveChanges();
}
}
这是我的Project类中的方法。
然而,在查询我的数据库之后,我发现它实际上没有更新。我没有得到任何错误或例外。当我单步执行时,我可以看到我所做的项目的更改。
答案 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();
以前有它,让我知道