Asp.net mvc 5 为Identity 2和应用程序模型使用单独的DB上下文

Asp.net mvc 5 为Identity 2和应用程序模型使用单独的DB上下文,asp.net-mvc-5,entity-framework-6,single-sign-on,asp.net-identity-2,Asp.net Mvc 5,Entity Framework 6,Single Sign On,Asp.net Identity 2,我正在使用VS.2017和EF6以及ASP.NET核心模板创建网站。我想知道是否真的可以在我的web应用程序上使用两种不同的应用程序数据库上下文 由于它是具有单个帐户的默认模板,因此它已经随标准迁移而来,用于在数据库上创建Identity 2存储库。它还有默认的ApplicationDBContext,尽管我没有看到任何实体在默认的ApplicationDBContext中公开(它是否应该公开用户?) 我相信很多人会问为什么。我希望为Identity 2.x设置默认的应用程序DB上下文(上下文1

我正在使用VS.2017和EF6以及ASP.NET核心模板创建网站。我想知道是否真的可以在我的web应用程序上使用两种不同的应用程序数据库上下文

由于它是具有单个帐户的默认模板,因此它已经随标准迁移而来,用于在数据库上创建Identity 2存储库。它还有默认的ApplicationDBContext,尽管我没有看到任何实体在默认的ApplicationDBContext中公开(它是否应该公开用户?)

我相信很多人会问为什么。我希望为Identity 2.x设置默认的应用程序DB上下文(上下文1),然后为我的应用程序模型设置上下文2,以便将它们分开

背后的想法是,身份上下文将托管在单独的数据库中,用于单次登录,但仅修改为将用户帐户与特定web应用程序站点关联

更新1 如上所述,将有多个域使用相同的“身份服务器”,但我不需要能够使用相同的用户自动登录到其他网站。换句话说,Identity Server是一个共享数据库,用于保存身份数据,但每个域都知道自己的用户(并忽略其他域的使用)


因此,第一个DB上下文将用于“Identity Server”数据库,第二个DB上下文用于与Identity无关的应用程序模型。

是的,如果您不关联Identity表,这是完全可行的。即使您需要关联,也有一些解决方法,例如存储用户表的键,并在需要时执行联接。但是,如何在asp.net应用程序中指定标识视图使用标识数据库上下文,而让其他控制器使用单独的应用程序数据库上下文?这对我来说并不清楚。@LordofScripts您可以有任意多个dbcontext。你可以将你的
ApplicationDbContext
重命名为
IdentityContext
,并根据自己的意愿创建另一个
DbContext
。你甚至可以将你的
IdentityContext
提取到一个nuget库中,并将其添加到所有需要的项目中,这将使你的生活更加轻松=新的MyDbContext();var identityContext=新identityContext()这是一个类。像对待任何一门课一样对待它。研究依赖注入,并在需要的地方注入正确的上下文。