为了账号安全,请及时绑定邮箱和手机立即绑定

记录更新限制-LINQ

记录更新限制-LINQ

C#
holdtom 2021-04-06 15:17:32
我想知道使用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条记录,该查询将执行还是崩溃?
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

我建议您将存储过程与merge语句一起使用,以备您进行事务处理时使用其他简单的SQL存储过程来执行此操作。

最好的方法是使用SQL Server的SqlBulkCopy。实体框架不是为大批量操作而设计的。SqlBulkCopy将提供更多优化的性能。


查看完整回答
反对 回复 2021-04-17
?
catspeake

TA贡献1111条经验 获得超0个赞

该查询可能带回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查询。


查看完整回答
反对 回复 2021-04-17
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信