[英]ASP.net & SQL 2008: What is the best way to store multiple values for lists when values are of varying amounts and not repeated throughout rows?
[英]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與選項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.