代码之家  ›  专栏  ›  技术社区  ›  Blake Rivell

使用干净的体系结构从ApplicationCore库中的实体引用基础结构库中的ApplicationUser

  •  -1
  • Blake Rivell  · 技术社区  · 7 年前

    我正在跟踪 Microsoft Architecture Guide

    指南实现了干净的体系结构模式,这是非常直接的。

    如果您查看使用clean架构模式的示例项目,您将看到有一个 Infrastructure/Identity 包含ApplicationUser.cs类的文件夹。

    我的问题:

    我知道一个解决方案是不在我的基础设施项目中存储ApplicationUser实体。然而,我觉得它应该存在,因为它在实现IdentityUser时总是依赖于Identity。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Khai Nguyen    7 年前

    在清洁建筑中:

    应用程序核心类型

    接口

    服务

    DTOs

    规格

    基础设施类型

    EF核心类型(DbContext、迁移)

    特定于基础架构的服务(文件记录器、SmtpNotifier等)

    因此ApplicationUser.cs是一个实体,它应该位于应用程序核心中

        2
  •  4
  •   Sasan    7 年前

    但是你不应该使用 ApplicationUser : IdentityUser 在核心层中,因为它与ASP.NET标识绑定。核心层不应该知道将要实现该域的技术。

        3
  •  0
  •   Marzouk    6 年前

    这也是我自己的问题,似乎是基于某种观点。最后,如果您依赖于其中指定了DbContext的任何包,那么您将在核心项目中引用该包。

    例如,我使用的是AspCore.Identity和IdentityServer4,我有很多DBContext,但现在让我们说两个:

    ConfigurationDbContext IdentityDbContext 这两个上下文控制着两个实体(只是为了让事情变得更简单)客户端(OAuth2客户端)和IdentityUser所以现在我已经拥有了所有这些作为基础设施,但现在我想拥有自己的核心实体ApplicationUser和ApplcationClient,那么我如何才能把它们放在我的核心中,而不让它们继承它们的父母,这样我就可以了对它们进行查询、保存或从任何源检索。

    推荐文章