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

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

  • 有继承关系的实体,子类无法正常使用
  • 有时候批量删除生成的sql语句有错误
    针对以上问题,我对源代码进行了一些修改,修改内容如下:
    EntityFramework批量增删改实战
    MappingHelper.cs
    如果当前操作的实体是有继承关系的子类,那么红框里的schema和tableName会获取不到;做了蓝框里修改后,就可以正常获取
    EntityFramework批量增删改实战
    EFBatchOperation.cs
    原Delete方法在操作子类时,调用_context.CreateObjectSet()生成条件语句时会发生错误(没有为指定的实体类型“xxx”定义 EntitySets。如果“yyy”是派生类型,请改用基类型。参数名: TEntity),所以就重新写了一个DeleteAll方法,换成了var query = _dbContext.Set().Where(_predicate);来生成条件语句,就不会出错了,当然后面的代码也做了一些相应的修改。

EntityFramework批量增删改实战
EntityFramework批量增删改实战
SqlQueryProvider.cs

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

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

相关文章:

  • 2021-07-23
  • 2021-07-06
  • 2022-12-23
  • 2021-11-06
  • 2021-08-14
  • 2022-02-24
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案