2010-06-11 92 views
0

假設我想要在端點上使用三種方法創建(無狀態)WCF服務:performSqlOperationA(),performSqlOperationB()performSqlOperationC()。每種方法都將數據插入到SQL數據庫中。在WCF調用中處理SQL連接的最佳做法是什麼?

我在辦公室看到事情的方式,每種方法都以代碼初始化一個SqlConnection對象開始。每種方法都會以代碼結束安全處理。

什麼是編碼這些WCF方法的一個好習慣,以便SqlConnection對象在每個方法中被初始化並處理,而不必在每個方法中執行這些操作?我知道我可以在WCF方法的類的構造函數中初始化連接,但我不知道如何處理它......這些調用不能包裝在using塊中。

一個解決方案,我熟悉的是 PostSharp,這讓我設置導致特定的代碼來在開始和每個方法調用結束時自動運行的屬性,但它是非常優選以做到這一點只有.net框架。

回答

3

最佳做法是使用using語句在每個方法調用中(或在從您的WCF服務操作調用的私有數據訪問方法中)初始化和配置SqlConnection對象。

public void performSqlOperationA() 
{ 
    ... 
    using(SqlConnection connection = ...) 
    { 
     ... 
    } 
    ... 
} 

什麼是你不喜歡這個?

+0

我不喜歡這件事,我必須在每種方法中做到這一點。似乎應該有一些解決這個冗餘的方法。 – 2010-06-11 15:21:52

+0

您可以封裝各種位(例如獲取連接字符串和創建連接),但沒有更好的方法來完成它。你也可以使用一個ORM,但你仍然會有一個等價的。 – Joe 2010-06-11 15:34:15

+0

我給出了答案+1,但好像有一些方法可以用於OperationContract到一個連接,還有一些如何處理併發。 – Paparazzi 2012-05-25 19:20:47

相關問題