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

前端之家收集整理的这篇文章主要介绍了.net – 实体框架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的世界.

猜你在找的MsSQL相关文章