加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – 实体框架4.0中的批处理数据库命令

发布时间:2020-12-12 16:09:30 所属栏目:MsSql教程 来源:网络整理
导读:我目前的项目需要与外部系统的日常同步.同步是基于复杂的导入文件结构,它被广泛的业务逻辑解析和处理.由于业务逻辑,我们决定在.NET代码中进行此操作,并重用现有的BL组件,而不是在存储过程或集成服务中写入相同的逻辑. BL层位于EF 4.0数据访问层的顶部.当前实
我目前的项目需要与外部系统的日常同步.同步是基于复杂的导入文件结构,它被广泛的业务逻辑解析和处理.由于业务逻辑,我们决定在.NET代码中进行此操作,并重用现有的BL组件,而不是在存储过程或集成服务中写入相同的逻辑.

BL层位于EF 4.0数据访问层的顶部.当前实现进程导入批处理,将所有更改填充到ObjectContext中,并在事务中执行SaveChanges.当我检查SQL分析器时,我看到EF执行每个实体更改为单个SQL命令(自己往返DB).此外,这些命令看起来完全顺序执行.所以我有多达100.000往返数据库,用于初始导入,每天同步数据库之间的往返10.000到50.000之间.

是否可以通过EF本身或某些提供商/扩展名以某种方式批量插入/更新/删除命令?

解决方法

不,不能做(是的 – 我也哭了).

EF不支持批处理操作,LINQ-SQL有(同)问题.

你有几个选择:

>存储过程
>经典ADO.NET或EntitySQL
>触发器

我以前选择了1和3.

所有这三种方法的问题是您失去了EF抽象,内部图形(乐观并发),并将您带回到本机SQL的世界.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读