Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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/6/entity-framework/4.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# 实体框架更新100K条记录_C#_Entity Framework - Fatal编程技术网

C# 实体框架更新100K条记录

C# 实体框架更新100K条记录,c#,entity-framework,C#,Entity Framework,我正在使用EF6和SQLCE数据库,其中只有几个表的记录数超过200K。我正在尝试更新其中一个表中的记录,但不幸的是,使用以下方法更新过程非常缓慢: var original = db.Users.Find(updatedUser.UserId); if (original != null) { original.BusinessEntityId = updatedUser.BusinessEntityId; original.Email = updatedUser.Email

我正在使用EF6和SQLCE数据库,其中只有几个表的记录数超过200K。我正在尝试更新其中一个表中的记录,但不幸的是,使用以下方法更新过程非常缓慢:

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    original.BusinessEntityId = updatedUser.BusinessEntityId;
    original.Email = updatedUser.Email;
    original.EmployeeId = updatedUser.EmployeeId;
    original.Forename = updatedUser.Forename;
    original.Surname = updatedUser.Surname;
    original.Telephone = updatedUser.Telephone;

    db.SaveChanges();
} 
我尝试的第二种方法是从数据库中实际获取所有记录,然后在内存中进行比较,并在循环后遍历结果列表,以更新数据库:

  foreach (var _data in comparedList)
  {
      using (var db = new MyContext())
      {
          db.Users.Attach(data);
          var entry = context.Entry(data);
          entry.Property(p => p.Forename).IsModified = true;
          context.SaveChanges();
      }
  }
你知道使用EF更新记录的有效方法吗

编辑
我还使用了中介绍的技术,它们最终导致“Store update、insert或delete语句影响了意外的行数(0)”。错误。

EF不是为批量更新而设计的-它是为查询和事务性更新而设计的(一次只有几条记录)


如果需要批量更新数据,请编写一条SQL语句来执行所有更新,或者使用SSIS之类的ETL工具。

EF不是为批量更新而设计的,它是为查询和事务更新而设计的(一次只更新几条记录)


如果需要批量更新数据,请编写一条SQL语句来执行所有更新,或者使用SSIS之类的ETL工具。

EF不是为批量更新而设计的,它是为查询和事务更新而设计的(一次只更新几条记录)


如果需要批量更新数据,请编写一条SQL语句来执行所有更新,或者使用SSIS之类的ETL工具。

EF不是为批量更新而设计的,它是为查询和事务更新而设计的(一次只更新几条记录)


如果需要大量更新数据,那么可以编写一条SQL语句来执行所有更新,或者使用SSIS之类的ETL工具。

不要调用
SaveChanges()
直到您完成所有记录的更新。使用一个接受用户ID作为参数的存储过程。这会更快,并使用数据库引擎进行大规模更新。我建议更改您的问题以完全再现问题。然后ping我,我将重新打开帖子。不要调用
SaveChanges()
直到您完成所有记录的更新。使用一个接受用户ID作为参数的存储过程。这会更快,并使用数据库引擎进行大规模更新。我建议更改您的问题以完全再现问题。然后ping我,我将重新打开帖子。不要调用
SaveChanges()
直到您完成所有记录的更新。使用一个接受用户ID作为参数的存储过程。这会更快,并使用数据库引擎进行大规模更新。我建议更改您的问题以完全再现问题。然后ping我,我将重新打开帖子。不要调用
SaveChanges()
直到您完成所有记录的更新。使用一个接受用户ID作为参数的存储过程。它速度更快,并使用数据库引擎进行大规模更新。我建议更改您的问题,以完全再现问题。然后ping我,我将重新打开帖子。我知道这一点,但我正在寻找最快的方法我知道,但是我正在寻找使用EF的最快方式。我知道,但是我正在寻找使用EF的最快方式。我知道,但是我正在寻找使用EF的最快方式。我知道,但是我正在寻找使用EF的最快方式。