如何在单独的类库中使用EF 6.0在ASP.Net核心项目中设置Identity

时间:2017-12-04 21:03:46

标签: c# asp.net entity-framework asp.net-core

前段时间我问this question about using EF with ASP.Net core,这很有效。既然我想添加ASP.Net Identity,我想知道最好的方法是将标识逻辑添加到具有常规/非核EF的单独项目中,还是添加到具有EF核心的主核心项目中。我看到很多讨论EF核心的页面,但我更喜欢在任何地方使用相同的上下文,我更喜欢使用常规EF,因为我正在做。我正在寻找什么是干净/最佳实践方法,我一直在使用常规EF,因为据我所知,EF core 1.0不支持存储过程,我更喜欢继续使用数据库第一种方法。感谢任何帮助我摆脱流沙的帮助。

注意:我的“用户”表(称为其他内容)中包含一些现有的个人资料数据;我打算将它用作我的身份用户表。

2 个答案:

答案 0 :(得分:0)

您是否考虑过基于现有身份数据库发布令牌的显式身份服务?

IdentityServer4是OpenId Connect提供商。它supports EF,以便您可以使用现有的用户数据执行身份验证。

现在推动.NET Core,这将是朝着这个方向迈出的一个很好的一步,有一个专门用于处理使用IdentityServer4和EF Core的身份的独立项目。

答案 1 :(得分:0)

ASP.Net Identity Framework是为Code-first设计的,通常会尝试为您生成表格。我不确定它是否能够在数据库优先工作,但我认为你可以按如下方式工作:

  1. 使用“身份/个人用户帐户”创建单独的临时项目/解决方案。
  2. 将此临时数据库中的数据结构插入主数据库,将AspNetUsers与您的用户表合并。
  3. 删除临时项目/解决方案和数据库。
  4. 更新EF6项目中的模型。这应该引入新表。
  5. 将Identity Framework添加到ASP.Net Core项目,引用EF6项目中的数据库上下文。
  6. 我没有尝试过这个,但是在使用Identity Framework的过程中,我看不出它为什么不起作用的原因。

    进一步阅读:

    数据库优先身份:Using Asp.Net Identity DataBase first approach

    用户表的自定义表名:How can I change the table names when using Visual Studio 2013 ASP.NET Identity?