2013-01-22 59 views
0

我想基於從web應用程序加載到數據表中的輸入csv文件在SQL表上執行插入/更新/刪除操作。目前,我使用DataSet來執行CRUD操作,但想知道在DataSet上使用LINQ會有什麼優勢。我假設代碼會減少和更強類型,但不知道如果我需要切換到LINQ。任何輸入讚賞。更新表:數據集或LINQ

編輯

這不是批量操作,CSV可能包含200個記錄最大。

+1

一旦你決定做錯了,多麼傾向於無關緊要。你應該讓你的dbms來做到這一點。 –

+0

如果數據庫是SQL Server,則可以將SSIS用於批量操作,例如。 – flup

+0

@TonyHopkinson,它是對現有應用程序的修改。所以我受限於我可以在這裏使用的技術。我知道SSIS是理想的選擇,但這不是一個選擇。由於它的SQL Server 2005,我甚至無法傳遞表參數。 – Sunny

回答

0

我用的是LumenWorks CSV reader,它非常快。它有自己的API來提取數據,使用IDataReader接口。這是一個來自codeplex.com的簡單示例。我將它用於我所有的CSV項目,因爲它在讀取CSV數據時速度非常快。我很驚訝它實際上有多快。

如果您想從這樣的讀者那裏得到答案,那麼您本質上是從數據讀取器API開始的,因此可能更容易使用數據表(您可以創建一個與結果集相匹配且易於使用的DataTable將數據通過匹配列複製到列)。

對於LINQ來說,很多更新可能會比較慢,這取決於您是使用實體框架還是其他方法,以及您使用的是什麼風格。一個DataTable,恕我直言,可能會更快。我遇到了LINQ問題,並且使用很多對象來更改跟蹤(如果您正在使用附加實體,而不是使用POCO)。我從Lumenworks獲取CSV文件並將其複製到DataTable中的表現相當不錯。

+0

是的,我遇到了這個開源庫和另一個FileHelpers。它肯定會幫助我將CSV解析到數據表中,但我的問題在於如何根據解析的數據在表上執行CRUD操作。 – Sunny

+0

哦,是的,對不起,我沒有解決這個問題。我會在上面更新我的回覆。 –

+0

感謝您更新答案。所以,看來LINQ不值得考慮。我正在考慮將列表作爲XML數據類型通過DataSet傳遞,因爲它從Web應用程序中刪除大量代碼,並提供更好的錯誤處理。使用DataSet,如果插入/更新/刪除中有任何錯誤,則失敗。 – Sunny