使用带有Identity和EF 6的asp.net 5 MVC 6的示例

时间:2015-03-26 22:03:42

标签: entity-framework-6 asp.net-core asp.net-identity-2

我正在使用asp.net 5和MVC 6设置一个新项目,但由于EF 7缺少功能,我想使用Entity Framework 6。

我设置了EF 6.1.3并且它正在运行。

Identity 3.0依赖于EF 7,因此我删除了它并在Identity 2.2中引用 但是我不知道从哪里开始。

4 个答案:

答案 0 :(得分:4)

我不确定如何在ASP.NET 5的最终版本中处理这个问题,但对于ASP.NET 5 RC1,我们有以下内容:

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

其次,要使Identity 3.0与EF6一起使用,您需要实现自己的" EF6友好的" Microsoft.AspNet.Identity.EntityFramework命名空间下的所有类的版本(代码在此处可用 - https://github.com/aspnet/Identity/tree/3.0.0-rc1/src/Microsoft.AspNet.Identity.EntityFramework),因为原始类仅适用于EF7:

  • IdentityDbContext
  • RoleStore
  • UserStore
  • IdentityRole
  • IdentityRoleClaim
  • IdentityUser
  • IdentityUserClaim
  • IdentityUserLogin
  • IdentityUserRole

您的实现应该使用EF6而不是EF7。这个过程非常简单,但是如果你想节省时间,我已经在这里分享了我的实现:

https://github.com/EntrypointSoft/AspNet.Identity.EntityFramework6

答案 1 :(得分:2)

这有几个部分。

  1. 您可以使用Microsoft.AspNet.Identity 3.0.0,但您需要制作自己的UserStoreRoleStore。就个人而言,我复制了UserStore.csRoleStore.cs的来源,并进行了使用我的EF6用户和角色类所需的调整。它们具有EF6中默认不使用的一些其他功能,例如规范化您需要支持(或解决)的用户名,电子邮件地址和角色名称,但接口只需要POCO,因此您会很好那里。
  2. 关注Identity Sample MVC project,但要在启动文件中指定自己的商店:
  3. services.AddIdentity<MyEf6User, MyEf6Role>()
        .AddRoleStore<MyEf6RoleStore>()
        .AddUserStore<MyEf6UserStore>();
    
    1. 非常清楚Microsoft.AspNet.Identity(以及所有asp.net 5)仍在进行中,诸如持票令牌之类的东西很大程度上没有记录,而Identity 3确实有一点设置比Identity 2.x更多;它将需要一些调整,并将针对CTP 7和其他未来版本进行更改。

答案 2 :(得分:2)

编辑1.0.0: Migrator.EF6现在支持1.0.0。

RC2的编辑: Migrator.EF6现在支持RC2。

最佳行动方案是将Identity的EF7提供商移植到EF6。

对于已经完成的端口,请检查在Asp.Net Core(5)下工作的Identity 3.0 + EF6:MR.AspNet.Identity.EntityFramework6

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

答案 3 :(得分:0)

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

它做了什么,它将EF6的现有UserStore包装在新的不可知的ASP.NET核心IUserStore<TUser>中。

支持TKey变得简单。