jke*_*rak 8 c# sql-server entity-framework
使用Entity Framework和存储库模式为内部企业MVC应用程序构建数据访问层.在某些情况下,我需要在SQL Server 2008 R2数据库中的1亿行左右的表中更新100k行.
我正在使用EF6,目标是我们正在重构的现有遗留数据库.我是Entity Framework的新手,但对SQL Server有很多经验.
无论我如何构建我的更新语句,当我运行一个分析器时,我会看到6个单独的ID更新.这可能需要5分钟才能运行.但是,我已经说过一个"批号",它是为一堆这些记录编制索引的.有没有办法UPDATE使用EF生成的单个where子句来记录这些记录?我的解决方案是编写一个简单的sp然后我有EF调用.
当前版本的实体框架不支持您希望的批量操作。每条记录的每次更新或删除都是一个单独的事务。为了避免这种情况,如果您不想经历创建存储过程的麻烦,您可以直接从实体框架运行 SQL(尽管它们很容易启动和运行)
using (var context = new MyDbContext())
{
context.ExecuteStoreCommand("Update MyTable Set Value = {0} Where SomeColumn = {1}",
updateValue, queryValue);
context.ExecuteStoreCommand("Delete From MyTable Where value = {0}",
myValueToQueryBy);
}
Run Code Online (Sandbox Code Playgroud)
请注意通过使用看起来与 非常相似的语法来使用该参数string.Format()。请参阅MSDN了解更多信息。
| 归档时间: |
|
| 查看次数: |
2252 次 |
| 最近记录: |