首页 文章

共享外键时分离标识表' and business tables' DbContexts

提问于
浏览
0

我使用IdentityServer作为我的API的授权服务器 . 它是一个单独的ASP.NET核心标识IdentityServer4项目,用于处理用户登录/登录/注册/等 . 我的'buisness'API位于单独的ASP.NET Core Web API项目中 .

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

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

但是,商务API服务器需要拥有自己的表 . 这些表中的大多数都需要有一个 UserId 外键(例如,在todo app中,API会有todo items表,其中users和todo项目具有一对多的FK关系) . 这意味着API服务器已经定义了它,大多数DbSets都与用户具有外键关系( ApplicationUser ) .

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

1 回答

  • 0

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

相关问题