ASP.NET Core Identity ApplicationUser 与域模型实体关系的分离

brk*_*brk 8 c# onion-architecture asp.net-identity entity-framework-core asp.net-core

我正在尝试在我的域模型中的 ASP.NET Core Identity 和实体之间实现良好的分离和架构。

我在使用 ASP.NET Core 构建的 Web 应用程序中使用洋葱架构。在核心项目中Domain,我有域模型,其中之一是Member实体。

然后在另一个项目中Infrastructure,我有内置的 ASP.NET Core Identity 设置,其中包含一个ApplicationUserIdentityUser.

    public class ApplicationUser : IdentityUser
    {
    }
Run Code Online (Sandbox Code Playgroud)

将身份用户和成员实体分开的想法很好。但是,我想将它们联系起来,但是使用 Entity Framework Core 这似乎是一个挑战。如果不在我的域模型中添加导航属性,我就无法解决这个问题,我想避免这种情况。

我希望我可以完全使用 Fluent API 来完成它,而不必添加属性,但情况似乎并非如此。

关于如何解决这个问题的任何建议?考虑到上述情况,如何在不添加核心项目依赖项的情况下在身份用户和域实体之间创建关系?

我的问题有点重复或与这里的一些帖子有关,例如

以及其他一些帖子。然而,这些问题的答案似乎是变通方法。也许这是唯一的方法?

我正在使用 ASP.NET Core 3.1 和 Entity Framework 3.1。对于这个项目。

小智 0

领域模型作为接口怎么样?

因此,您在域项目中拥有一些 IMember(以及其他类型...),并且在 DAL 层中,您获得了带有一组成员的 DataAccessDbContext:IMember(以及所有其他类型,即博客:IBlog 等)。

并使用 IdentityDbContext 创建单独的项目,其中 MemberIdentiy : IdentityUser, IMember。

而且,

由于您的 Domain 有 IMemberRepository、ISomeEntityRepository 等,并且 ISomeEntity 有 IMember prop,因此您可以分别在 DAL 中实现 SomeEntityRepository 并在 Identity 项目中实现 MemberRepository 。

您可以决定两个上下文是否使用相同的数据库。