2

質問のために、私は次のように構成されたプロジェクトを持っています。ここで、各レイヤーは私のビジュアル スタジオ ソリューションのプロジェクトにマップされます。

  • プレゼンテーション層
  • ビジネスロジック層
  • データ層 (Entity Framework での作業)

データ層で定義されたリポジトリ クラスがあります。BL レイヤーでそれらをインスタンス化すると、エンティティ フレームワーク アセンブリへの参照が見つからないというエラーが表示されます。DL で使用されているのと同じエンティティ フレームワーク dll への参照を追加すると、動作します。

私の質問は、BL が DL を参照するだけでは不十分なのはなぜですか? BL で EF への「追加の」参照を追加する必要があるのはなぜですか? ソリューションで複数の EF バージョンを制御したくないことは明らかです。

私のDLは「アトミック」ユニットであり、そのすべてのオブジェクトは自己完結型であり、適切に機能するために他に何も必要ないと思います。では、DL で定義されたクラスをインスタンス化するときに、EF 参照を追加する必要があるのはなぜですか?

4

1 に答える 1

2

これは実際に、ビルド エンジン MSBuild がどのように機能するかです。Visual Studio は間接参照について不平を言うことはありませんでしたが、TFS ビルド サーバーで壊れたことを発見しただけでした。なぜ彼らがこのような方法でこれを構築したのかについては、私には答えがありません。

簡単な修正方法があります。ソリューション レベルの NuGet パッケージを使用します。Entity Framework パッケージを NuGet パッケージとしてソリューションに追加し、この参照を持つ必要があるすべてのプロジェクトをチェックします。この方法により、複数の異なるバージョンも防止されます。

詳細な説明については、この記事を参照してください

于 2015-06-24T11:24:01.270 に答える