EntityFramework批量增删改实战

最近项目中遇到批量增删改的业务,使用传统的EF方式效率实在是低的可怕,名牌插件Z.EntityFramework.Extensions又是收费项目,只好另找其他插件,终于在github上找到了EntityFramework.Utilities。
github上有两个EntityFramework.Utilities项目:

使用方法,可以参考官方的例子,很简单,这里就不详细说明了。下面说一我使用当中碰到问题:

  • 有继承关系的实体,子类无法正常使用
  • 有时候批量删除生成的sql语句有错误
    针对以上问题,我对源代码进行了一些修改,修改内容如下:

    MappingHelper.cs
    如果当前操作的实体是有继承关系的子类,那么红框里的schema和tableName会获取不到;做了蓝框里修改后,就可以正常获取
    在这里插入图片描述
    EFBatchOperation.cs
    原Delete方法在操作子类时,调用_context.CreateObjectSet()生成条件语句时会发生错误(没有为指定的实体类型“xxx”定义 EntitySets。如果“yyy”是派生类型,请改用基类型。参数名: TEntity),所以就重新写了一个DeleteAll方法,换成了var query = _dbContext.Set().Where(_predicate);来生成条件语句,就不会出错了,当然后面的代码也做了一些相应的修改。

在这里插入图片描述
在这里插入图片描述
SqlQueryProvider.cs

  • 不知道为什么有时候lamda表达式生成的sql语句在From关键字后面会多出一个空格(FROM [dbo].[GPipeI] AS [Extent1]),就导致原正则表达式找不到对应的schema、table、alias;进行修改后就正常了。
  • 为了配合EFBatchOperation.DeleteAll方法,新增了一个GetQueryInformation方法的重载。

修改后的代码下载连接:
https://download.csdn.net/download/luleipiero/12249722

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值