EntityFramework.Extended 实现 update count+=1
2023-02-18 15:32:38 时间
在使用 EF 的时候,EntityFramework.Extended 的作用:使IQueryable<T>
转换为update table set ...
,这样使我们在修改实体对象的时候,避免先查询再修改,而是直接 Update,大致写法:
IQueryable<Entity> entities = _entityRepository.GetAll();
entities = entities.Where(x => x.Id == 1);
await entities.UpdateAsync(x => new Entity { Count = 666 });
但有时候,我们还有一种操作,就是在实体属性值的基础上,进行加减操作,不要被上面的new Entity
吓到(误以为只能赋新值),其实用 EntityFramework.Extended 实现很简单,代码示例:
IQueryable<Entity> entities = _entityRepository.GetAll();
entities = entities.Where(x => x.Id == 1);
await entities.UpdateAsync(x => new Entity { Count = x.Count + 1 }); //在这里。
生成的 SQL 代码:
UPDATE [dbo].[Entity] SET
[Count] = [Count] + 1
FROM [dbo].[Entity] AS j0 INNER JOIN (
SELECT
[Extent1].[Id] AS [Id]
FROM [dbo].[Entity] AS [Extent1]
WHERE (1 = CAST( [Extent1].[Id] AS int)) AND (1 = [Extent1].[Id])
) AS j1 ON (j0.[Id] = j1.[Id])
稍微有点复杂,如果去掉INNER JOIN
多余代码就好了。
相关文章
- 可怕!CPU暗藏了这些未公开的指令!
- 一个故事看懂CPU的SIMD技术
- CPU被挖矿,Redis竟是内鬼!
- 一次fork引发的惨案!
- 一个故事看懂CPU的TLB
- 现代操作系统管理内存,到底是分段还是分页,段寄存器还有用吗?
- 一个故事看懂HTTPS
- 一个故事看懂进程间通信技术
- 一个故事看懂机械硬盘原理
- 一个故事看懂内存条工作原理
- CPU:网卡老哥,你到底怎么工作的?
- 主板上来了一个新邻居,CPU慌了!
- 还不懂Docker?一个故事安排的明明白白!
- 五分钟看懂抓包神技:DPDK
- 假如把Redis服务器们拉到一个群,看看他们是怎么工作的?
- 从创建进程到进入main函数,发生了什么?
- 一口气看完45个寄存器,CPU核心技术大揭秘
- 协程到底是什么?看完这个故事明明白白!
- 一个故事看懂AI神经网络工作原理
- 一个爬虫的故事:这是人干的事儿?