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 区别

实体框架加入3个表

registerShutdownHook() 和 close() 有啥区别

jQuery中addClass不起作用

sigmoid是啥有啥作用,或者有啥功能!