0

データベース接続(WCF RIA + EF経由)がいつ開かれるか、いつ閉じられるかを知る必要があります。しかし、私のDomainService(Web側)メソッドでは:

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

常に「closed」を返します。今だけでも成功した応答でした。WFC RIAでは「open-」および「closeconnection」コマンドを呼び出さないため、接続は実際には最初の要求後に開かれ、タイムアウト(web.configで構成)後に自動的に閉じられます。しかし、主な問題は、接続がタイムアウトした場合、DomainContextがクライアント側にこれについて何も通知しないことです。

したがって、接続がタイムアウトし、ユーザーがデータベースにリクエストを送信しようとすると、例外(実際にはアクセス例外)が発生し、DomainContextは非表示で自動的に接続を復元し、ユーザーは2回目のリクエスト後に応答を取得できます(すべてタイムアウト後)。

そのため、接続状態が閉じているとき、開いているときを知る必要があります。

そして、実際の接続状態をリアルタイムで表示できるインジケーターを作成したいだけです。

そして、2番目のそれほど重要ではない質問-データベースアクション(ログイン、ログアウト、GetQuerriessなどを含む)を暗黙的に指定するために、1つの静的DomainContextオブジェクトを作成する必要がありますか?大丈夫ですか?ほぼ各操作グループに対してDomainContextの新しいインスタンスを取得しますか?願わくば、あなたは私の考えを理解してくれました。

4

1 に答える 1

0

Ado.NETの場合、接続を管理できます。「接続プーリング」と言います http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

EntityFrameworkもADO.NETを使用しますが、IISサーバーが最適化された接続プールを管理します。

私は何年もの間、そのような接続が閉じられたエラーに直面したことはありませんでした。あなたが私たちにもっと詳細を教えてくれれば、多分それは明らかでしょう。通常、20秒後にWebセッションが停止します。それは失われたセッションである可能性がありますか?

RIAサービスにはDomainServiceクラスを使用します(RIAを作成した質問でわかるように)DomainServiceクラスには、EntityModel(EDMX)のObjectContextがあります。したがって、 this.ObjectContextによってドメインサービスメソッドでそれらに到達できます。EDMXが1つある場合は、ObjectContextの別のインスタンスは必要ありません。ドメインサービスクラスの別のインスタンスが必要になる場合があります。

于 2013-02-25T06:57:59.617 に答える