2011-03-10 159 views
0

Iam正在尋找一種將大量數據傳輸到數據庫表的方法。我有一個超過100個屬性的類,我想知道一個將所有數據傳送到表的好方法。c# - 處理大量數據

我有一個類,我爲每個屬性賦值。什麼是最好的組合屬性和發送到另一個類插入表?

在此先感謝。

+1

描述「很多數據」。有100個字段的E記錄並不多。但是,如果您想要一次存儲數百兆字節,那麼這就是另一回事。 – 2011-03-10 12:12:21

+0

從理智(而非表現)的角度來看,某種ORM將幫助大型班級。然而,100個屬性聽起來很多,因此可能需要查看是否真正以最有效的方式對事物進行建模。 – UpTheCreek 2011-03-10 12:18:48

+0

處理100個領域的最有效方法是iam尋找的東西:S。我不知道如何以有效的方式設置它們,然後我可以把它們放在桌子上。 – Anders 2011-03-10 12:36:21

回答

2

我的觀點是在數據庫服務器的單次訪問中批量處理所有INSERT語句。

我不知道你是否使用了一些OR/M,但我會假設你使用的是純ADO.NET。

您可以通過首先以編程方式創建純文本文件並追加所有INSERT語句,然後將其用作IDbCommand.ExecuteNonQuery實現的命令文本來實現此目的。

批量處理非常重要,因爲您可以在一次出差和連接中將整個INSERT語句列表發送到數據庫服務器,並讓數據庫服務器優化存儲您的數據,這樣您的應用程序就可以自由地執行其他任務。

我建議你批量插入任務應該通過異步(即在主應用程序之一以外的另一個線程中)以避免凍結用戶界面。也許它是一個控制檯應用程序,所以只需使用主線程。

+0

當我點擊將值賦予用戶界面凍結屬性的按鈕時。有沒有很好的方法將所有的字段分成兩個或更多的組,然後將它們添加到表中? – Anders 2011-03-10 12:39:12

+0

剛剛閱讀我的答案的人! :)奇怪的是,我建議你避免UI凍結。你需要學習多線程,不是嗎? – 2011-03-10 12:44:48

+0

我的應用程序凍結的原因僅僅是因爲某些字段爲NULL。通過將NullReferenceException添加到catch語句中,應用程序不會凍結並加載所有字段,而不會產生eny問題。將所有字段添加到datagriview需要大約2分鐘的時間:S – Anders 2011-03-10 13:36:35

0

從你的問題,我認爲你有一個有很多字段的類,你想自動將值複製到你的ORM數據類型,然後你可以插入到數據庫?如果是這樣,請嘗試查看AutoMapper,它很棒。 http://automapper.codeplex.com/