Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在调用另一个对象上的ApplyCurrentValues之前需要获取旧实体?_C#_Asp.net Mvc_Entity Framework 4_Linq To Entities - Fatal编程技术网

C# 为什么在调用另一个对象上的ApplyCurrentValues之前需要获取旧实体?

C# 为什么在调用另一个对象上的ApplyCurrentValues之前需要获取旧实体?,c#,asp.net-mvc,entity-framework-4,linq-to-entities,C#,Asp.net Mvc,Entity Framework 4,Linq To Entities,看起来这段代码不起作用,除非我包含代码段的第一行,它是之后没有被引用的?这就是ApplyCurrentValues方法的工作原理吗 _entities.Contacts.FirstOrDefault(c => c.Id == contactToEdit.Id); _entities.Contacts.ApplyCurrentValues(contactToEdit); _entities.SaveChanges(); return RedirectToAction("Index"); 此

看起来这段代码不起作用,除非我包含代码段的第一行,它是之后没有被引用的?这就是
ApplyCurrentValues
方法的工作原理吗

_entities.Contacts.FirstOrDefault(c => c.Id == contactToEdit.Id);
_entities.Contacts.ApplyCurrentValues(contactToEdit);
_entities.SaveChanges();
return RedirectToAction("Index");
此代码编辑联系人记录并保存到数据库中

以下是整个方法:

[HttpPost]
public ActionResult Edit(Contact contactToEdit)
{
    if (!ModelState.IsValid)
    {
        return View();
    }

    try
    {
        _entities.Contacts.FirstOrDefault(c => c.Id == contactToEdit.Id);
        _entities.Contacts.ApplyCurrentValues(contactToEdit);
        _entities.SaveChanges();
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

根据我的理解,对象上下文需要知道哪些字段发生了变化。
只有在上下文保留原始值记录的情况下,字段才会更新

第一行似乎有一个副作用,即使对象上下文知道原始值(通过加载实体)

看看答案