Entity framework 6 将asp.net 5 MVC 6与Identity和EF 6一起使用的示例

Entity framework 6 将asp.net 5 MVC 6与Identity和EF 6一起使用的示例,entity-framework-6,asp.net-core,asp.net-identity-2,Entity Framework 6,Asp.net Core,Asp.net Identity 2,我正在使用asp.NET5和MVC6建立一个新项目,但是我想使用EntityFramework6,因为EF7中缺少一些特性 我设置了EF 6.1.3,它正在工作 标识3.0依赖于EF 7,因此我已将其删除并在标识2.2中引用 但我不确定从这里走到哪里。这有几个部分 您可以使用Microsoft.AspNet.Identity3.0.0,但需要创建自己的UserStore和RoleStore。就我个人而言,我复制了和的源代码,并对使用我的EF6用户和角色类进行了必要的调整。它们有一些默认情况下在E

我正在使用asp.NET5和MVC6建立一个新项目,但是我想使用EntityFramework6,因为EF7中缺少一些特性

我设置了EF 6.1.3,它正在工作

标识3.0依赖于EF 7,因此我已将其删除并在标识2.2中引用
但我不确定从这里走到哪里。

这有几个部分

  • 您可以使用
    Microsoft.AspNet.Identity
    3.0.0,但需要创建自己的
    UserStore
    RoleStore
    。就我个人而言,我复制了和的源代码,并对使用我的EF6用户和角色类进行了必要的调整。它们有一些默认情况下在EF6中未使用的附加功能,例如规范化您需要支持(或解决)的用户名、电子邮件地址和角色名,但是这些接口只需要POCO,因此您在那里会做得很好
  • 遵循,但在启动文件中指定您自己的存储:
  • services.AddIdentity()
    .AddRoleStore()
    .AddUserStore();
    
  • 请注意,Microsoft.AspNet.Identity(以及所有asp.net 5)仍在进行中,诸如承载令牌之类的东西基本上没有文档记录,而Identity 3的设置确实比Identity 2.x多一点;它将需要一些调整,并将更改为CTP7和其他未来版本

  • 我不确定在ASP.NET 5的最终版本中将如何处理此问题,但在ASP.NET 5 RC1的情况下,我们有以下几点:

    首先,您应该使用Identity 3.0,因为据我所知,在MVC6中无法使用Identity 2.x

    其次,要使Identity 3.0与EF6协同工作,您需要在Microsoft.AspNet.Identity.EntityFramework命名空间下实现自己的所有类的“EF6友好”版本(代码可在此处找到-),因为原始类只能与EF7协同工作:

    • IdentityDbContext
    • 罗莱斯托尔
    • 用户商店
    • 识别管
    • 同一分子
    • 识别码
    • 身份声明
    • 标识用户登录
    • 身份服务器角色
    您的实现应该使用EF6而不是EF7。这个过程非常简单,但是如果您想节省时间,我在这里分享了我的实现:


    为1.0.0编辑:现在支持1.0.0


    为RC2编辑:现在支持RC2


    最好的做法是将Identity的EF7提供商移植到EF6上

    对于一个已经完成的端口,请检查在Asp.Net核心(5)下工作的Identity 3.0+EF6:

    如果您还需要EF6迁移,请查看我的其他答案。

    是一个很小的包装器,它将ASP.NET EntityFrameowork 6移植到ASP.NET核心标识,只需一个小文件

    它的作用是,将EF6现有的
    UserStore
    封装在新的不可知ASP.NET核心
    IUserStore


    TKey
    的支持变得很容易。

    祝你好运,在谷歌上找到这个@ShoaibShakeel的资料。我正在调查这个问题,你也有进展吗?@Hexxagonal如果你还在寻找这个问题,请查看我的答案。你有任何关于这个设置是如何创建的报告吗?身份3与EF6。不幸的是,没有公开。我考虑过制作一个GitHub项目和软件包,但除了您自己可能需要的定制(例如使用用户名作为电子邮件地址)之外,实际上没有太多其他内容。欢迎使用Identity 3.0和EF6来此寻求建议的任何人。这种方法是可行的,但它也要求您用自己的非泛型类完全替换IdentityUser、IdentityUserClaims等类。问题是EF6不支持映射泛型,Identity 3.0代码源广泛支持映射泛型。我遵循了您的代码,但在尝试激活“ApplicationUserStore”时出现错误,因为
    无法解析类型为“ApplicationDbContext”的服务。
    有什么想法吗。