0

誰かが私が得たものよりも優れた解決策を持っている場合に備えて、状況全体を説明します。

まず、これらは私が使用しているテクノロジーです。

SQL Server 2012
Entity Framework 5
ASP.NET MVC 4
Repository Pattern for EF5 developed by myself

コードの一部で SQL Server のエラー 19 (物理接続が存在しません) が常に発生します。私の調査から、使用後に接続が閉じられていることを確認していないことがわかりました。私が見つけることができた代替手段は次のとおりです。

  1. キーワードの使用using
  2. アクションが戻った後に接続を閉じる

コードがかなり大きいため、最初のアプローチを破棄しました。そのため、コンテキストを使用するすべての場所を見つけて変更することは、現時点では不可能です。

そこで、2 番目のアプローチを使用することを考えました。コントローラーを装飾するための属性を作成するだけで済み、返されるたびに、action後で接続が閉じられるか破棄されるようにします。私はすでにやり方を知っている:

public class MyAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        //code to get the current running connection
    }
} 

私の質問は、現在のエンティティ フレームワーク接続を取得して属性から閉じるにはどうすればよいですか?

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

0

コントローラーは、フレームワークによるアクション呼び出しごとにインスタンス化され、破棄されます。コントローラーのコンストラクターでエンティティ フレームワーク コンテキストを安全に作成し、それをコントローラーのフィールドに格納して、コントローラーのDisposeメソッドで破棄することができます。

于 2013-09-27T09:00:59.333 に答える