我如何做一个简单的“更新[表格],其中[任何字段] = [任何值]

时间:2014-12-19 23:42:36

标签: c# sql .net entity-framework

我知道如何在SQL中编写代码,但在EF中,我很难过:

SQL查询:

UPDATE Queue
SET Status = 'Locked'
WHERE ID = 1 AND Status = 'New'

我尝试了什么,但知道错误的EF DbContext就是这样。

var queueEntities = new QueueEntities();

var queueItem = queueEntities.SingleOrDefault<Queue>(q => q.id == 1 && q.Status = "New");

queueItem.Status = "Locked";

queueEntities.Entry<Queue>(queueItem).State = System.Data.Entity.EntityState.Modified;

queueEntities.SaveChanges();

由于显而易见的原因,这些与以下内容不同:

SQL方法在更新记录时锁定记录

DbContext方法获取它,然后更新它。在并发中,这允许线程A获取项目,在它调用更新之前,线程B将获得该项目,从而导致两个项目都处理QueueItem

如果您需要更具体的信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

我找到了答案,这就是我们所说的批量更新。为了能够使用完全可自定义的 where 子句来安装Nuget包:PM&gt; Install-Package EntityFramework.Extended。引用的网站是:http://weblogs.asp.net/pwelter34/entity-framework-batch-update-and-future-queries

这样的沮丧不是吗?实体框架无法定义多个/自定义 where 子句?