微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.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的世界.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐