猿问

记录更新限制-LINQ

我想知道使用LINQ一次可以更新和提交多少条记录是否有限制,我的查询看起来像什么?


var reports = prdb.Reports

              .Where(w => w.FileYear == FileYear)

              .AsQueryable();


foreach (var r in reports)

{

    // update the report teacher name field

    var user = syndb.GetUser(r.CreatedBy);

    string strTeacherName = user.given + " " + user.Surname;

    r.TeacherName = strTeacherName;

}

prdb.SubmitChanges();

该查询可能带回1000条记录,该查询将执行还是崩溃?


holdtom
浏览 125回答 2
2回答

慕丝7291255

我建议您将存储过程与merge语句一起使用,以备您进行事务处理时使用其他简单的SQL存储过程来执行此操作。最好的方法是使用SQL Server的SqlBulkCopy。实体框架不是为大批量操作而设计的。SqlBulkCopy将提供更多优化的性能。

catspeake

该查询可能带回1000条记录,该查询将执行还是崩溃?这取决于许多因素:您是否有足够的公羊?您在元素1001处收到NullReferenceException吗?3分钟后(如果在DB上工作)您是否获得事务超时?简单的答案是:如果环境条件合适,您甚至可以处理1亿条记录。要在国外回答一些问题(我想您正在对数据库进行查询):我想您正在寻找一种最有效的方法。如果您需要使用固定值或一个取决于行中另一个值的值来更新一百万条记录,请使用sth。喜欢 update table set teachername = (select surname || ', ' || lastname from users where userid = table.teacherid);并通过执行它Context.Database.ExecuteSqlCommand("..")。通过同时更新数据库本身,可以使数据库本身更快。如果您根据用户的输入或其他内容进行了复杂的操作和个别更新,则可能需要执行此操作,即通过EF和LinQ查询。
随时随地看视频慕课网APP
我要回答