【问题标题】:asp.net mvc load related data from multiple contextsasp.net mvc 从多个上下文加载相关数据
【发布时间】:2021-11-03 07:12:40
【问题描述】:

我有一个带有 2 个上下文的 MVC .Net Core 3.1 项目。一个是标准身份上下文,另一个是应用程序上下文。 它们在服务器上存储为 2 个独立的数据库。

在我的应用程序中,我有一个实体“Project”,它有一个“ProjectLeadUserId”字段,我在其中存储来自 AspNetUsers 的该用户的 ID。

当我列出所有打开的项目时,我想显示来自 AspNetUsers 的“用户名”,而不是与每个项目相关的 GUID。

通常我会在两者之间有一个外键,所以在我看来我可以做类似的事情:

project.ProjectLead.UserName

但我无法确定如何在我的实体中设置它,因为 FK 将在不同的上下文中。

这可能吗,还是我通过分离身份和应用程序上下文给自己造成了问题?

编辑: 忽略外键问题,因为我可以在应用程序逻辑中处理它。当涉及多个上下文时,有没有办法加载相关数据。 例如获得项目列表后,是否可以使用 AspNetUsers.Id 和 Project.ProjectLeadUserId 加载相关的 AspNetUsers 数据?

【问题讨论】:

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


    【解决方案1】:

    引用 SQL Server documentation:

    FOREIGN KEY 约束只能引用同一服务器上同一数据库中的表。跨数据库参照完整性必须通过触发器来实现。有关详细信息,请参阅创建触发器。

    SQL Server 中的不同数据库之间不可能有一个外键。

    如果 2 个上下文针对同一个数据库,我认为您想要的仍然不可能。

    在我过去的项目中,我经常看到人们扩展 IdentityDbContext 以创建他们的数据库上下文并仅使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      相关资源
      最近更新 更多