【问题标题】:Separating Identity tables' and business tables' DbContexts while sharing foreign key在共享外键的同时分离身份表和业务表的 DbContext
【发布时间】:2016-12-26 21:56:11
【问题描述】:

我使用 IdentityServer 作为我的 API 的授权服务器。它是一个单独的 ASP.NET Core Identity + IdentityServer4 项目,用于处理用户登录/登录/注册/等。我的“业务”API 位于单独的 ASP.NET Core Web API 项目中。

我正在使用 Entity Framework Core 代码优先迁移来为这两个项目生成我的数据库表。

正如您所期望的那样,Auth Server 项目在其ApplicationDbContext(默认的 Identity DbContext)中包含所有默认的 Identity 用户表。

然而,商务 API 服务器需要有自己的表。这些表中的大多数都需要有一个UserId 外键(例如,在 todo 应用程序中,API 将具有 todo items 表,其中用户和 todo 项目具有一对多的 FK 关系)。这意味着 API 服务器有自己定义的 DbContext,大多数 DbSet 与用户具有外键关系 (ApplicationUser)。

我该如何设置? EF Core 似乎不支持跨多个 DbContext 的 FK 关系。此外,这样做,您必须注入两次上下文类(每个项目一次),这需要复制我的连接字符串。我知道我可以让我的 Auth Server 项目也处理我的业务表(就像添加更多 DbSet 一样简单),但我想将它们分开。有没有一种干净、惯用的方式来做这件事,还是我想错了?

【问题讨论】:

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


    【解决方案1】:

    我这样做的方法是将用户表添加到业务 DbContext 中,当用户在 Identity DbContext 中注册时,该表插入了一行。该用户行具有对在 Indentity DbContext 中创建的 Id 的引用,但可用作外键,因为它与 Business DbContext 中的其他表位于同一 DbContext 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 2018-09-07
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      相关资源
      最近更新 更多