在SQL Server中插入批量记录

时间:2014-01-25 06:43:20

标签: 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个子表。我需要先将数据从文件插入子表。如果插入记录导致子表中的错误某些原因我将不得不回滚该事务并继续从文件中的另一条记录

2 个答案:

答案 0 :(得分:2)

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

PM> Install-Package EntityFrameworkETL

项目描述 实体框架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));

答案 1 :(得分:0)

此类操作最适合作为存储过程。否则,您将进行多次SQL调用。

基本上,您创建一个接受用户定义类型的存储过程,并对传递的数据进行操作。

post有关于如何执行此操作的一些信息。