【问题标题】:Entity Framework Update without reading实体框架更新无需阅读
【发布时间】:2015-10-28 23:56:40
【问题描述】:

有没有一种方法可以更新单个表/实体,而无需先将实体读入列表。 这是我想要实现的sql。

更新表集 col1 = Case col2 When 0 then 1 else 0 end 这会在一秒钟内更新大约 500,000 条记录

我不想做

 List<table> updRecs = Context.tables.toList();
 for each
 {
  if(col1 == 0)
  col2 = true 
  else
  col2 = false
 }

Context.SaveChanges();

上面非常慢,大约 4 分钟。

【问题讨论】:

  • 您能否向我们提供有关您的用例的更多信息?您可以运行原始 SQL 或存储过程,但这听起来很奇怪
  • 听起来你可能想看看EntityFramework.Extended
  • 在循环之前禁用更改跟踪并在之后激活它(ctx.Configuration.AutoDetectChangesEnabled = false)

标签: c# entity-framework entity-framework-6


【解决方案1】:

EntityFramework.Extended

nuget

git

context.Tasks
    .Where(t => t.StatusId == 1)
    .Update(t => new Task { StatusId = 2 });

【讨论】:

  • 有用的介绍链接:seguetech.com/blog/2015/01/26/…
  • 更新中的项目数量是否有限制。似乎它一次只能处理 12965 条记录,更多它会抛出无效的列 ID 错误消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
相关资源
最近更新 更多