我正在使用asp.net 5和MVC 6设置一个新项目,但由于EF 7缺少功能,我想使用Entity Framework 6。
我设置了EF 6.1.3并且它正在运行。
Identity 3.0依赖于EF 7,因此我删除了它并在Identity 2.2中引用 但是我不知道从哪里开始。
答案 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:
您的实现应该使用EF6而不是EF7。这个过程非常简单,但是如果你想节省时间,我已经在这里分享了我的实现:
https://github.com/EntrypointSoft/AspNet.Identity.EntityFramework6
答案 1 :(得分:2)
这有几个部分。
Microsoft.AspNet.Identity
3.0.0,但您需要制作自己的UserStore
和RoleStore
。就个人而言,我复制了UserStore.cs和RoleStore.cs的来源,并进行了使用我的EF6用户和角色类所需的调整。它们具有EF6中默认不使用的一些其他功能,例如规范化您需要支持(或解决)的用户名,电子邮件地址和角色名称,但接口只需要POCO,因此您会很好那里。services.AddIdentity<MyEf6User, MyEf6Role>()
.AddRoleStore<MyEf6RoleStore>()
.AddUserStore<MyEf6UserStore>();
答案 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
变得简单。