質問: ASP.NET Core Identityとドメインモデルのエンティティの間で適切な分離とアーキテクチャを実現しようとしています。 ASP.NET Coreで構築されたWebアプリケーションでOnionアーキテクチャを使用しています。コアプロジェクト`Domain`には、ドメインモデルがあり、そのうちの1つは`Member`エンティティです。 その後、別のプロジェクトで`Infrastructure` 、私が含まれているASP.NETコアアイデンティティの設定が組み込まれてい`ApplicationUser`クラスをそのから継承`IdentityUser` 。 ``` public class ApplicationUser : IdentityUser { } ``` アイデンティティユーザーとメンバーエンティティを分離するという考えは良いことです。しかし、私はそれらを関連付けたいのですが、Entity Framework Coreを使用することは難しいようです。ドメインモデルにナビゲーションプロパティを追加せずにこれを回避することはできません。これは避けたいです。 プロパティを追加せずにFluent APIを使用して完全に実行できることを望んでいましたが、そうではないようです。 これにアプローチする方法に関する推奨事項はありますか?上記を考慮すると、コアプロジェクトから依存関係を追加せずに、アイデンティティユーザーとドメインエンティティ間の関係をどのように作成できますか? 私の質問はやや重複しているか、ここにこれらの投稿のいくつかに関連しています * コアドメインモデルからのASP.NET IDの分離-オニオンアーキテクチャ * Onion Architecture Identity Framework * データレイヤーのエンティティの.NET Identity ApplicationUserに関係を追加する その他の投稿もいくつかあります。ただし、これらの質問に対する回答は回避策のようです。多分それが唯一の方法ですか? ASP.NET Core 3.1とEntity Framework 3.1を使用しています。このプロジェクトのために。
回答: インターフェイスとしてのドメインモデルはどうですか? したがって、ドメインプロジェクト(および他のタイプ...)にIMemberがあり、DALレイヤーにMember:IMember(および他のすべてのタイプ、つまりBlog:IBlogなど)のセットを持つDataAccessDbContextがあります。 そして、Identityの個別のプロジェクトを作成します。 また、 ドメインにIMemberRepository、ISomeEntityRepositoryなどがあり、ISomeEntityにIMemberプロップがあるため、DALでSomeEntityRepositoryを、IdentityプロジェクトでMemberRepositoryを個別に実装できます。 両方のコンテキストが同じデータベースを使用するかどうかを決定できます。