分离标识表和业务表DbContexts同时共享外键

问题描述:

我使用IdentityServer作为授权服务器为我的API。它是一个单独的ASP.NET Core Identity + IdentityServer4项目,用于处理用户登录/登录/注册等。我的“buisness”API位于单独的ASP.NET Core Web API项目中。分离标识表和业务表DbContexts同时共享外键

我使用实体框架的核心代码优先迁移来产生这两个项目我的数据库表。

的验证服务器项目具有所有的默认用户身份的表其ApplicationDbContext(默认身份的DbContext)内,如你所期望的。

的楼内设有商务API服务器,但是,需要有自己的表。大多数这些表需要有一个UserId外键(例如,在待办事项应用程序中,API将具有待办事项项目表,其中用户和待办事项项目具有一对多FK关系)。这意味着API服务器有我自己定义的DbContexts,大多数DbSets与用户有外键关系(ApplicationUser)。

我将如何设置? EF Core似乎不支持跨多个DbContext的FK关系。此外,这样做,你必须注入上下文类两次(每个项目一次),这需要重复我的连接字符串。我知道我可以让我的Auth服务器项目也处理我的业务表(像添加更多DbSets一样简单),但我希望将它们分开。有没有一种干净的,习惯性的做法,或者我想这是错误的方式?

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