DBContext.Entry 有啥作用?
Posted
技术标签:
【中文标题】DBContext.Entry 有啥作用?【英文标题】:What does the DBContext.Entry do?DBContext.Entry 有什么作用? 【发布时间】:2013-02-09 08:16:39 【问题描述】:[HttpPost]
public ActionResult Edit(Movie movie)
if (ModelState.IsValid)
db.Entry(movie).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
return View(movie);
这个动作接收一个电影模型并在数据库中更新它。
但我不知道怎么做。movie
对象没有附加到数据库,那么实体框架如何知道数据库中的哪一行应该更新?
我确定 Entry 方法与它有关,但我真的不知道这个方法是做什么的。我读到它提供了信息,但我不明白如何通过更改条目的State
来附加并由DBContext
跟踪。
【问题讨论】:
【参考方案1】:它只是将实体附加到 dataContext。否则,您将不得不使用主键搜索实体,然后编辑值并保存。
如果您知道某个实体已经存在于数据库中但可能已对其进行了更改,那么您可以告诉上下文附加该实体并将其状态设置为已修改。 http://msdn.microsoft.com/en-US/data/jj592676
【讨论】:
但是你有 Attach 方法。 因此该方法知道实体类的哪些属性是键,然后可以在内部制定搜索以通过其键获取实体并附加它。正确的?如果是这样,那就太棒了。 @Idan here 的区别。以上是关于DBContext.Entry 有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在具有存储库模式的实体框架中伪造 DbContext.Entry 方法
DbSet.Attach(实体)与DbContext.Entry(实体).State = EntityState.Modified 区别