このプラットフォーム上で寄せられた質問に、専門分野を専門とする心理療法士が回答する Web アプリケーションです。
私が使用したのは:
建築物
プロジェクトは 2 つのレイヤーで構成されます。データベースに関連付けられている永続層と、データベースに関連付けられていないコア層
コントローラー => コア <= 永続性
このような依存関係図について話すことができます。コア層にはインターフェイス クラスが含まれます。永続化には、これらのインターフェイスを定義するクラスが含まれています。コントローラー側では、 UnitOfWorkクラスを使用してコントローラーの DBContext依存関係を軽減しました。ただし、コントローラーは上位層ですが、下位層である UnitOfWork と密接に結合されていました。これにはIUnitOfWorkクラスを使用しました。 IUnitOfWork は、 IRepository を含む完全に抽象クラスを定義します。次に、 UnitOfWorkクラスをIUnitOfWorkクラスに依存させました。同様に、コントローラー層とIUnitOfWorkの間に依存関係を作成しました。
コントローラー => IUnitOfWork <= UnitOfWork
現在、コントローラーの上位層は抽象クラスに依存しています。同様に、低レベルで詳細なクラスであるUnitOfWork では、Abstrack がクラスに依存するようになりました。実際に私がやったのは、コア層を完全に独立させることでした。アプリケーションのテスト可能性が向上しました。また、コア層はORMフレームワークから独立した構造となっています。 UnitOfWork で行われる変更は、IUnitOfWork レイヤーには影響しません。
一方、アプリケーションでは、 DbContext の依存関係がUnitOfWork Layer でまだ継続していました。これにより、コントローラーと DbContext の密結合問題が間接的に発生しました。これを解決するために、 Dependency Injection Framework を使用しました。 (Ninject 3.2.1.0)