我有一个场景,我找回项目列表,并且需要将每个项目插入到数据库中,其中一个项目>一个行映射。从.NET 4.0应用程序插入多行到SQL Server 2008数据库的最佳方法
最初,我想过使用存储过程来插入单个项目,并循环遍历列表,为每个元素调用存储过程。但我想知道是否有更优雅/最佳的方法可用。特别是利用SQL Server 2008/.NET 4.0。
实体框架也可以发挥作用。
我有一个场景,我找回项目列表,并且需要将每个项目插入到数据库中,其中一个项目>一个行映射。从.NET 4.0应用程序插入多行到SQL Server 2008数据库的最佳方法
最初,我想过使用存储过程来插入单个项目,并循环遍历列表,为每个元素调用存储过程。但我想知道是否有更优雅/最佳的方法可用。特别是利用SQL Server 2008/.NET 4.0。
实体框架也可以发挥作用。
SqlBulkCopy的是快速和容易,你可以设置一个批量大小和映射所有列
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx
有你可以做批量插入一些方法的。
插入我以前的博客上讲述选项1比的性能选项2 here。
在实体框架,你可以这样做:
yourContext.Configuration.AutoDetectChangesEnabled = false;
yourContext.Configuration.ValidateOnSaveEnabled = false;
在100个刀片的套餐吗SaveChanges()
...尝试与1000和看到的变化。
由于在所有插入过程中,上下文都是相同的,所以您可以每过1000次插入就重建一次上下文对象。
var yourContext = new YourContext();
在我的导入数据过程中做了这项改进,花了7分钟到6秒。
实际的数字...不可能是100的1000您的情况...尝试它和啾啾它。