Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架:使用Case语句更新数据_Entity Framework_Dbcontext_Entity Framework 4.3 - Fatal编程技术网

Entity framework 实体框架:使用Case语句更新数据

Entity framework 实体框架:使用Case语句更新数据,entity-framework,dbcontext,entity-framework-4.3,Entity Framework,Dbcontext,Entity Framework 4.3,假设我有一个包含以下列和值的SQL表: +----+---------+------------+---------+------------+ | ID | Status1 | Condition1 | Status2 | Condition2 | +----+---------+------------+---------+------------+ | 1 | 1 | 1 | 1 | 1 | | 2 | 1 |

假设我有一个包含以下列和值的SQL表:

+----+---------+------------+---------+------------+
| ID | Status1 | Condition1 | Status2 | Condition2 |
+----+---------+------------+---------+------------+
|  1 |       1 |          1 |       1 |          1 |
|  2 |       1 |          0 |       1 |          1 |
|  3 |       1 |          1 |       1 |          0 |
|  4 |       1 |          0 |       1 |          0 |
+----+---------+------------+---------+------------+
我想分别根据条件1和条件2中的值更新状态1和状态2的值

我的SQL语句如下所示:

更新
我的桌子
设置
状态1=情况条件1
当1到3时
其他4
完,,
状态2=情况条件2
当1到3时
其他4
结束
哪里
ID=@targetRowID
如果我针对每个ID分别对表运行上述SQL语句,我将得到以下值:

+----+---------+------------+---------+------------+
| ID | Status1 | Condition1 | Status2 | Condition2 |
+----+---------+------------+---------+------------+
|  1 |       3 |          1 |       3 |          1 |
|  2 |       4 |          0 |       3 |          1 |
|  3 |       3 |          1 |       4 |          0 |
|  4 |       4 |          0 |       4 |          0 |
+----+---------+------------+---------+------------+
在Entity Framework中,我通过以下方式执行相同类型的更新:

var myRow=dbContext.myTable.Single(r=>r.ID==1);
myRow.Status1=(myRow.Condition1==1)?3 : 4;
myRow.Status2=(myRow.Condition2==1)?3 : 4;
dbContext.SaveChanges();

这是可行的,但它首先从数据库中获取数据,然后执行第二个查询来进行更新。是否可以像上面的普通SQL代码那样一次性完成更新?

LINQ总是在更新之前执行查询。这是一个众所周知的技术烦恼

(挑剔:“这是可行的,但它首先从数据库获取数据,然后进行第二次查询以进行更新。”发送到数据库的第二件事不是“查询”。“查询”是标准英语,是一个问题,因此数据库查询是一个信息请求,即SELECT语句。更新是一个命令。)