EntityFramework.Extended 實現 update count+=1


在使用 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多余代碼就好了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM