我有一个PHP / MySQL系统,我使用Azure SQL移植到ASP.NET MVC5。我在掌握微软引入的新身份解决方案的概念时遇到了问题。由于以前的系统存在数据库结构,我已将旧的MySQL数据库转移到Azure SQL。到现在为止还挺好。在那里,我有一个包含所有用户相关数据的用户表,例如用户名,电子邮件密码等。因为我想继续使用此表,我创建了Identity用户表中存在的额外数据库字段。我还创建了自定义UserManager和其他类(MyUser,MyClaim等),因此我可以登录。一切正常。
由于我有数据库第一种方法,而不是代码优先方法,我想使用User类与用户表进行交互。但我的UserManager返回MyUser类(继承自IdentityUser),而不是我模型中的User类。当我要求User表中的所有用户时,甚至我的dbcontext都会返回MyUser类。
我是否真的需要手动更新MyUser类来复制User表,所以如果我在User表中进行更改并更新我的模型,我必须手动更新MyUser类,因为系统不能/ woun不使用模型用户类?
答案 0 :(得分:1)
IdentityUser表示默认的EntityFramework IUser实现。由于您拥有自己的现有架构,因此您必须手动滚动某些类以实现ASP.NET Identity以使用您自己的表。
为了将您的User类与ASP.NET Identity一起使用,您需要确保它继承自Microsoft.AspNet.Identity.IUser。实现IUser后,通过引用User类更新对MyUser的所有引用。注意:为了清楚起见,您可能希望将User类更新为类似MyAppNameUser的内容。
完成上述操作后,您可能需要实现IUserStore,以便UserManager类可以与您的数据库模式进行交互。
您可能需要查看https://github.com/raquelsa/AspNet.Identity.MySQL以获得有关实现某些ASP.NET Identity接口的一些想法。