簡體   English   中英

從.NET 4.0應用程序向SQL Server 2008數據庫中插入多行的最佳方法

[英]Best way to insert multiple rows into SQL Server 2008 database from .NET 4.0 app

我有一個場景,我得到一個項目列表,我需要將每個項目插入一個數據庫,一個項目>一行映射。

最初,我考慮使用一個存儲過程來插入單個項目,並循環遍歷列表,調用每個元素的存儲過程。 但我想知道是否有更優雅/最佳的方法可用。 特別是利用SQL Server 2008 / .NET 4.0。

實體框架也可以發揮作用。

SQLBulkCopy快速簡便,您可以設置批量大小並映射所有列

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

您可以通過幾種方式進行批量插入。

  1. 使用SqlDataAdapter,在其上設置InsertCommand,並使用例如DataTable( MSDN )調用.Update。 這可以將插入批量分批到您選擇的批量大小。
  2. 使用SqlBulkCopy類(使用此更好的性能)。
  3. 創建一個帶有TABLE值參數的sproc - 然后為該sproc傳遞一個數據表以便一次插入( MSDN

我以前的博客上講述選項1與選項2的性能在這里

在Entity Framework中,您可以:

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

在100個插入包中執行SaveChanges() ...嘗試使用1000並查看更改。

因為在所有這些插入期間,上下文是相同的,所以您可以每1000次插入重建上下文對象。

 var yourContext = new YourContext();

在我的導入數據進程中進行此改進,從7分鍾到6秒。

在你的情況下,實際的數字......不可能是100的1000 ...嘗試並調整它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM