更新EF4中的记录?

时间:2014-04-04 06:13:54

标签: asp.net-mvc-3 entity-framework

我是Asp.NetMVC3的新手。我正在尝试使用EF4更新我的记录。 下面是我更新记录的代码。

[HttpPost]
    public ActionResult Edit(Movie movies)
    {
        using(var db = new AmsecDevTestEntities1())
        {
            db.Movies.Attach(db.Movies.Single(m => m.Id == movies.Id));
            db.Movies. (movies); //Im stuck here how can i update the record

        }
    }

我尝试使用 db.Movies.ApplyCurrentValues(电影); 。但是我得到一个错误,说明这里不存在上下文。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

像这样编辑行:

var movie = db.Movies.Single(m => m.Id == movies.Id);
movie.Name = "Pulp Fiction";
db.SaveChanges();

OR

context.Entry(movies).State = EntityState.Modified;
db.SaveChanges();

请参阅此处的MSDN文章:http://msdn.microsoft.com/en-nz/data/jj592676.aspx,请查看此部分:

  

将现有但已修改的实体附加到上下文

请注意,如果你附加了你真的需要确保在新的环境中发生这种情况。如果上下文已经跟踪了具有相同id的实体,则会出现错误。

答案 1 :(得分:0)

Try like this

Change the state of the entity to Modified:

db.Movies1.Attach(movie);
db.ObjectStateManager.ChangeObjectState(movie, EntityState.Modified);
db.SaveChanges();

This marks all properties of movie as modified and will send an UPDATE statement to the database which includes all column values, no matter if the values really changed or not.