C# 实体框架更新100K条记录
我正在使用EF6和SQLCE数据库,其中只有几个表的记录数超过200K。我正在尝试更新其中一个表中的记录,但不幸的是,使用以下方法更新过程非常缓慢: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
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的最快方式。