0

私の解決策は次のように分かれています。

  • データプロジェクト-EntityFrameworkを保持します
  • ビジネスロジック/サービスプロジェクト-ビジネスロジックを実装する/データに対して他の作業を行うクラスが含まれています
  • MVC3プロジェクト

私がこれを設定する方法は、サービスクラスがエンティティフレームワークを含むように機能することです。エンティティフレームワークをラップするリポジトリを作成するために依存性注入を使用しています。私が直面している問題は、リポジトリがninjectを介して作成されるたびに、新しいEFコンテキストが作成されるため、すべての変更が保存されるわけではないということです。私はサービスプロジェクトとMVCプロジェクトの両方にNinjectバインディングを持っていることに注意してください。ここで話しているのは、バインディングがクラスライブラリにある場合です。

私が行った調査に基づくと、同じコンテキストが使用されるようにInRequestScopeを使用することが推奨されているようです。ただし、これをMVCプロジェクト/ Webプロジェクトではなくクラスライブラリで使用しているので、クラスライブラリ(AppStartフォルダーなどすべてを作成する場所)でNinject.Web.Commonを使用するのは理にかなっていますか?

または、これを処理する別の方法はありますか?

4

1 に答える 1

0

Ninject.Web.Commonがどのように機能するかを誤解し、nugetインストールによって自動的に追加された自動追加のNinjectWebCommon csファイルに混乱し、エントリポイントプロジェクト専用であると思いました。クラスライブラリがHttpContextにアクセスできることを知りませんでした。また、nugetパッケージが「便利に」追加したAppStartフォルダーを削除することで、クラスライブラリでInRequestScopeを使用できました。

于 2013-01-29T17:50:02.597 に答える