Asp.net 分离标识表';和业务表';共享外键时的DBContext

Asp.net 分离标识表';和业务表';共享外键时的DBContext,asp.net,asp.net-mvc,entity-framework,asp.net-core,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Core,我正在使用IdentityServer作为API的授权服务器。它是一个单独的ASP.NET Core Identity+Identity Server 4项目,用于处理用户登录/登录/注册等。我的“业务”API位于单独的ASP.NET Core Web API项目中 我正在使用EntityFramework核心代码优先迁移为这两个项目生成数据库表 正如您所期望的,Auth-Server项目在其ApplicationDbContext(默认标识DbContext)中具有所有默认标识用户表 但是,b

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

我正在使用EntityFramework核心代码优先迁移为这两个项目生成数据库表

正如您所期望的,Auth-Server项目在其
ApplicationDbContext
(默认标识DbContext)中具有所有默认标识用户表

但是,buisnessapi服务器需要有自己的表。这些表中的大多数都需要具有
UserId
外键(例如,在todo应用程序中,API将具有todo items表,其中用户和todo项具有一对多FK关系)。这意味着API服务器有我定义的自己的DBContext,大多数数据库集与用户有外键关系(
ApplicationUser


我该怎么设置呢?EF Core似乎不支持跨多个DBContext的FK关系。此外,这样做,您必须两次(每个项目一次)注入上下文类,这需要复制我的连接字符串。我知道我可以让我的Auth-Server项目也处理我的业务表(就像添加更多的dbset一样简单),但我希望将它们分开。是否有一种干净、惯用的方法来执行此操作,或者我的想法是错误的?

我执行此操作的方法是向Business DbContext添加一个用户表,该表在用户在Identity DbContext中注册时插入了一行。该用户行引用了在indentitydbcontext中创建的Id,但可以用作外键,因为它与业务DbContext中的其他表位于同一DbContext中