2012-02-09 52 views
0

基本上我現在要做的是:如何使用DbDataAdapters在長時間運行的Web服務中處理ADO.NET DbConnection?

在初始化過程中

  • 創建連接,並將其存儲
  • 每個 適配器創建DbDataAdapters和他們的命令與存儲的連接
  • 通話DbDataAdapter.Fill從數據庫填充數據表

並且當處理請求

  • 插入/更新/在數據表在某些時候刪除行
  • 調用DbDataAdapter.Update。不一定每次(更新自然使用適配器的命令連接)

這是正確的做法還是應該總是創建一個新的連接時請求到達,然後將其分配給DbDataAdapter.Insert /更新/ DeleteCommand.Connection ,在調用DbDataAdapter.Update之前?我正在考慮網絡/服務器問題後重新連接到數據庫的問題。

感謝& BR -Matti

+0

它是在IIS中託管的WCF嗎? – pdiddy 2012-02-09 16:37:22

+0

它是WCF,不在IIS中託管,但在Windows服務中。我只是開發持久層。我已經以一種總是創建新連接的方式更改了實現,並且在調用DbDataAdapter.Update之前,我設置了適配器3個命令的連接屬性。但我仍然在聽什麼其他人不得不說的,爲什麼:) – 2012-02-09 17:33:32

回答

0

因爲你提到的網絡服務,想想併發。如果在您的服務器端處理兩個或更多的併發請求會怎麼樣?

可以使用相同的連接嗎?可以使用相同的DataAdapter嗎? 最可能的答案是 - 它不是,它可能不起作用。

因此,最安全的方法是在每次請求時創建一個新的連接和一個新的數據適配器。

由於連接彙集在一起​​,所以「重新連接」應該沒有問題 - 池服務於連接,並且握手很可能在之前執行過。那麼沒有性能問題。

+0

感謝Wiktor,但併發是照顧(我使用線程安全單例)。每次處理請求時我都不想再次加載所有表,所以我必須使用相同的DataSet。 – 2012-02-09 13:44:06

相關問題