2010-04-16 95 views
1

比方說,我有一個ASP.NET網站(.NET 3.5)中有5個表的數據集,每個大約有30,000行,平均12列。我想將數據集中的所有數據插入到SQL Server 2008中5個非常相似但不完全相同的表中。我也想使用LINQ(個人偏好 - 嘗試學習新東西)。使用LINQ從數據集插入數據到SQL

是否像遍歷數據集一樣簡單,並且對於每行創建關聯類的新實例,使用數據集的行初始化其數據,將其添加到數據模型,然後在數據模型中執行一個巨大的SubmitChanges結束?

有沒有更好的方法來做到這一點與LINQ?或者這是事實上的標準?

+1

你的意思是* Linq to SQL *? – 2010-04-16 22:37:51

+0

我主要對LINQ to SQL感興趣,但我不想讓人們不把LINQ引用到數據集。當所有事情都說完之後,我只是尋求經驗豐富的人員在處理數據集,SQL和各種LINQ時可能意識到的最佳實踐和/或管道捷徑。 – Mayo 2010-04-19 13:33:57

回答

2

創建對象並插入它們很好。但爲了避免最後的巨大承諾,您可能需要每隔100行執行一次SubmitChanges()

或者,如果您有現金,則可以獲得Red Gate的「SQL數據比較」實用程序的副本。那麼你再也不必寫這些東西了。 :-)

編輯2010-04-19:如果你想使用一個交易,在這種情況下,您需要在L2S中明確地管理自己的事務(請參見http://msdn.microsoft.com/en-us/library/bb386995.aspx)。如果遇到任何故障,請在try/catch中運行查詢並回滾事務。建議

最後兩個位:

  1. 確保您的ASP.NET超時設置得足夠高。
  2. 考慮打印出某種進度指示。這使得運行這種長期運行的東西更加可口。
+0

假設我想把所有東西都捆綁到一個事務中,那麼在每一個100條記錄或者一個巨大的提交結束處進行提交會更合適嗎?或者我已經通過Web應用程序導入了這麼多的數據,從而通過了「合理的解決方案」? :) – Mayo 2010-04-19 13:37:09

+0

太多評論中說;改爲編輯答案。 – roufamatic 2010-04-19 17:47:52

1

DataContext.ExecuteCommand可與任意SQL語句一起使用。你可以做一個「INSERT FROM」。

+0

有趣的想法 - 我會嘗試今天花一些時間。 – Mayo 2010-04-19 13:37:58