3

ServiceStack と EF を使用する ASP.NET MVC Web アプリケーションに取り組んでいます。私の AppHost では、Funq をデフォルトでリクエストの再利用スコープに設定します。

container.DefaultReuse = ReuseScope.Request;

次に、EF コンテキストを登録します。

単体テストを実行すると (つまり、HTTP 要求が存在しない場合)、「DbContext が破棄されました」という例外が発生します。HTTP リクエストがない場合、コンテキストが Funq によってすぐに破棄されるためだと思います。右?

ハイブリッド再利用 (つまり、HTTP コンテキストが存在する場合はリクエストごと、またはスレッドごと) をサポートする StructureMap の以前の経験があります。

4

1 に答える 1

1

悪い!これは Funq の問題ではなく、EF データベースの移行の問題であることが判明しました。

どうやら、移行ロジックは、コンテキストを破棄することでクリーンアップされます。私の問題は、IDbContextFactory移行にコンテキストを提供していたことと、そのCreateメソッド内で、Funq のコンテナによって解決されたコンテキストのインスタンスを返していたことです。これは、コンテナ内のインスタンスが移行後に破棄された方法です。

于 2013-06-26T18:54:55.050 に答える