2012-01-13 57 views
1

我有一个场景,我找回项目列表,并且需要将每个项目插入到数据库中,其中一个项目>一个行映射。从.NET 4.0应用程序插入多行到SQL Server 2008数据库的最佳方法

最初,我想过使用存储过程来插入单个项目,并循环遍历列表,为每个元素调用存储过程。但我想知道是否有更优雅/最佳的方法可用。特别是利用SQL Server 2008/.NET 4.0。

实体框架也可以发挥作用。

回答

2

有你可以做批量插入一些方法的。

  1. 使用SqlDataAdapter,在其上设置InsertCommand,并使用例如调用.Update。一个DataTable(MSDN)。这可以将插入物批量化为您选择的批量大小。
  2. 使用SqlBulkCopy类(更好的性能可能与此)。
  3. 创建一个存储过程,需要一个表值参数 - 然后传递数据的表中为存储过程中一气呵成(MSDN

插入我以前的博客上讲述选项1比的性能选项2 here

0

在实体框架,你可以这样做:

yourContext.Configuration.AutoDetectChangesEnabled = false; 
yourContext.Configuration.ValidateOnSaveEnabled = false; 

在100个刀​​片的套餐吗SaveChanges() ...尝试与1000和看到的变化。

由于在所有插入过程中,上下文都是相同的,所以您可以每过1000次插入就重建一次上下文对象。

var yourContext = new YourContext(); 

在我的导入数据过程中做了这项改进,花了7分钟到6秒。

实际的数字...不可能是100的1000您的情况...尝试它和啾啾它。

相关问题