2013-02-24 65 views
0

我需要當數據庫連接(通過WCF RIA + EF)被打開,被關閉的時候就知道了。但在我的DomainService(在網絡側)方法:EF ObjectContext的總是返回「關閉」連接狀態

return this.ObjectContext.Connection.State.ToString(); 

始終返回 「關閉」。即使剛纔是成功的迴應。連接確實在第一次請求後打開,並在超時後自動關閉(在web.config中配置),因爲在WFC RIA中我沒有調用「open-」和「close connection」命令。但是主要的問題 - 如果連接時間超時了,DomainContext不會告訴客戶端這方面。

因此,如果連接時間驅趕出局,並且用戶嘗試連接到數據庫的請求 - 他會得到一個異常(實際上訪問除外),然後,DomainContext hidely自動恢復連接,用戶可以在第二次請求後得到答案(超時後)。

這就是爲什麼我需要知道的 - 當連接狀態是關閉的,打開時。

而我只想讓一個指標,可以顯示實時的實際連接狀態。

;第二,同樣重要的問題 - 我需要做一個靜態DomainContext對象隱含的任何數據庫操作(包括登錄,註銷,GetQuerriess和et.c.)?可以嗎?幾乎爲每一組操作獲取DomainContext的新實例?希望,你明白我的想法。

+0

[HELD] http://forums.asp.net/t/1389167.aspx/1 引用: ConnectionTimeout指定如何長,以秒爲應該從試圖打開一個連接超時之前的代碼等待。它直接與線路連接有關。 CommandTimeout指定命令在超時之前等待多長時間(以秒爲單位)。這與諸如Fill(), – Mans7 2013-02-24 18:41:56

+0

等調用相關。另外,沒有任何特殊動作的實體框架調用打開和關閉數據庫命令。我的問題在數據庫設置的託管中看起來像。 – Mans7 2013-02-24 18:43:52

+0

請讓你的問題更清楚。給我們發生哪種異常。你在使用哪個數據庫?你是如何設置連接字符串的?正如我猜你使用實體框架,請總結你的問題。只要告訴我們什麼是錯誤和你想要學習什麼。 – 2013-02-25 06:47:43

回答

0

對於Ado.NET您可以管理連接的,我們說的「連接池」 http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

的EntityFramework也使用ADO.NET,但IIS服務器管理,優化連接池我們。

我從來沒有過面對這樣的連接數年關閉的錯誤。如果你給我們更多的細節,可能會很清楚。一般20秒後,網絡會話就會死機。它可以是一個失去的會議?

我們對RIA服務使用DomainService類(正如我在你寫的RIA問題中看到的) DomainService類具有ObjectContext的EntityModel(EDMX)。所以,你可以通過this.ObjectContext在您的域名服務方法達到這些目標。如果你有一個EDMX,你將不需要你的ObjectContext的另一個實例。您可能只需要不同的域服務類實例。

+0

謝謝。解決方案是在主帖的第一和第二評論。 – Mans7 2013-02-27 13:24:21

相關問題