c# - 在 SQL Server 中插入批量记录

标签 c# asp.net sql-server-2008 entity-framework asp.net-mvc-4

谁能告诉我如何在事务下将数据批量插入到 SQL Server 中?我有一个程序可以将数据从一个文件导入到数据库的多个表中。我正在使用 SQL Server 和 Entity Framework 将这些记录导入到事务下的数据库中。请告诉我这是遵循的好方法吗?

我正在为此使用 Entity Framework 。但是当我导入1000条记录时,我发现它导致了SQL Server的锁定。

该文件包含许多列。很少有列属于父表,其余列属于子表。那么我们如何使用 SqlBulkCopy 映射它们呢?

有 10 个子表。我需要先将数据从文件插入到子表中。如果由于某种原因插入记录导致子表出错,我将不得不回滚该事务并继续从文件中获取另一条记录

最佳答案

今天我发现了一个很好的批量插入库:EntityFrameworkETL

PM> Install-Package EntityFrameworkETL

项目描述 Entity Framework ETL 用于使用现有 DbContext 批处理命令。这在生产和开发之间移动数据时很有用。

示例用法

ETL = new EntityFrameworkETL.ETL(() => new DataContext("name=source"), () => new DataContext("name=target"));
ETL.DeleteAll<Person>();
ETL.BatchInserts<Person>(100, true, x => x.Include("Jobs").Where(y=> y.Age > 65 && y.IsRetired));

关于c# - 在 SQL Server 中插入批量记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21347608/

相关文章:

c# - Datastax Cassandra c# 驱动程序不通过批处理插入数据

c# - 汇总两个连接表的总计时的空引用

c# - 检查参数是否具有值的 MVC 操作属性?

c# - 根据最新的日期时间获取列表项

asp.net - iFrame 中的 SSL 登录

sql - 在 sql server 2008 中将 varchar 转换为十进制

c# - 如何获取代码所在程序集的路径?

c# - Kinect v2 如何知道帧是否排队

c# - 分页查询如何*慢*?

sql-server-2008 - 我对SQL Server Management Studio失去了捷径-在哪里可以找到它?