【问题标题】:(asp.net core mvc) How can I use identityUser in UI layer with product in entity layer(asp.net core mvc)如何在UI层中使用identityUser与实体层中的产品
【发布时间】:2023-03-31 11:50:02
【问题描述】:

我在 WebUI 层使用了 Identity 包。我想将这些用户与我保留在实体层中的产品相关联。

查看下图图片

我无法引用身份用户类。我该怎么做?

我收到以下错误。

谢谢

【问题讨论】:

  • 不确定为什么需要引用整个项目。保存实体时,只需将关联的用户 ID 作为字符串传递。
  • 查看下面的链接以了解依赖关系stackoverflow.com/questions/2052579/circular-dependencies
  • 我想从管理员用户那里为其他用户添加产品,但我想我可以按照你说的做。我会试试的,谢谢。

标签: asp.net model-view-controller entity-framework-core asp.net-core-mvc asp.net-identity


【解决方案1】:

您似乎正在使用传统的“N 层”架构。使用这种架构,用户通过 UI 层发出请求,该层仅与 BLL(业务逻辑层)交互。 BLL 反过来可以调用 DAL(数据访问层)来请求数据访问。 UI 层不应直接向 DAL 发出任何请求,也不应通过其他方式直接与持久性交互。同样,BLL 只能通过 DAL 与持久性交互。这样,每一层都有自己众所周知的职责。

DAL 和 BLL 应用程序通常是类库,当我们使用它时,我们可以添加项目引用(找到构建 .dll 文件)。

我想将这些用户与我保留在 实体层。我无法引用身份用户类。我能怎么做 那个?

所以,关于这个问题,你可以尝试将Identity User类放在DAL层,配置与其他模型的关系,然后在BLL层或UI层添加引用。

有关常见 Web 应用程序架构的更多详细信息,请查看以下文章:

Common web application architectures

N-Tier Architecture in ASP.NET Core

N-Tier Architecture and Tips

【讨论】:

    【解决方案2】:

    您可以为您的 Identity DbContext 添加一个数据访问层:Tutorial video

    业务层可以引用身份数据访问层。 BLL 可以负责查找用户和查找产品(我猜是存储在 Adt.DataAccess 层中)。如果需要针对 Products 表对 AspNetUsers 表进行处理,可以随时在 BLL 中结合查询内存中两个数据访问层的结果。

    【讨论】:

      猜你喜欢
      • 2015-07-30
      • 1970-01-01
      • 2014-07-14
      • 2021-10-20
      • 2015-06-24
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2011-06-10
      相关资源
      最近更新 更多