• 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多余代码就好了。

  • 相关阅读:
    lombk在IDEA中报ClassNotFoundException错误
    Groovy在不同JDK版本下的性能差异
    Groovy中那些神奇注解之InheritConstructors
    Groovy中那些神奇注解之ToString
    Groovy中那些神奇注解之Memoized
    写个自己的远程桌面
    JAVA的BIT数组
    基于JDK 8的Dubbo Admin
    走进Groovy (二)
    走进Groovy (一)
  • 原文地址:https://www.cnblogs.com/xishuai/p/entityframework-extended-update-count.html
Copyright © 2020-2023  润新知