2017-09-14 11 views
0

.NET Core 2.0アプリケーションを使用している状況を想定してください。 Webアセンブリ、ビジネスアセンブリ、およびDataAccessアセンブリもあります。.NETコアのネストされたプロジェクト参照の防止

WebアセンブリがDataAccessアセンブリ(Entity Frameworkの内部にある)を直接参照しないようにしたいと思います。これは、Webアセンブリがショートカットを取り、DbContextと直接対話するのを防ぐためです。

私は、ビジネスとビジネスを参照しているWebでDataAccessを参照しています。

私のWebプロジェクトのコントローラでは、DataAccessプロジェクトでpublicとマークされているため、DbContextに直接アクセスできますが、明らかにWebプロジェクトに何らかの形で与えられていますネストされた参照。

私はこれと似た話題があるとします:https://github.com/aspnet/Mvc/issues/6635しかし、ここではStack Overflowのテーマをあまり見つけられませんでした。

これらのネストされた依存関係にトップレベルプロジェクトがアクセスするのを防ぐためのエレガントな方法はありますか?

答えて

0

これは、注入のための具体的なオブジェクトではなくインターフェイスを使用する理由です。 DataAccessアセンブリの外部にあるDBContextへの参照が漏れてはいけません。これは、上位層の基になるデータベースとの結合が大きすぎることを意味します。

+0

Rob、これは質問に関するものではありません。私は抽象化のすべてをやっています。しかし、Entity Framework Code Firstを使用するためには、公開DbContextが必要です。私はDataAccessアセンブリのすべてのDataAccess関連項目を移動しました...しかし、.NET Coreは自分自身のプロジェクト依存関係から再帰的にすべての依存関係に直接アクセスできるため、Webプロジェクトから直接DbContextにアクセスできます。 – wvdhouten

関連する問題