使用Asp.Net身份数据库第一种方法
我需要整合Asp.Net最新的MVC版本与一个现有的数据库,其中有一个额外的列String Address
表dbo.AspNetUsers
我需要创build一个具有属性Address的实例ApplicationUser
。
任何想法如何做到这一点?
一个可行的解决scheme,适用于我,基本上我能够将Asp.Net Identity用户configuration文件与现有的数据库集成。
获取Asp.Identity表:
- 使用validation个人用户帐户创build一个MVC项目
- 打开Web.config中的DefaultConnection下列出的数据库。 它会被称为(aspnet- [时间戳]或类似的东西。)
- 使用SQL Server Management Studio(为mdc附加数据库)脚本化数据库表。
或者使用http://identity.codeplex.com/。;
与现有的数据库集成:
- 将脚本表插入到SQL Server Management Studio中的现有数据库中。
- 自定义和添加关系到ApplicationUser(如有必要)。
- 创build新的Web项目> MVC>数据库第一个项目>导入DB与EF …。
- 在IdentityModels.cs中,更改ApplicationDbContext:base(“DefaltConnection”)以使用项目的DbContext。
现在你的应用程序中有你的数据库中的Asp.Identity Tables和ER模型。
Asp.Identityconfiguration文件添加新属性:
- 启用entity framework代码首先数据库迁移,只需在工具的'包pipe理器控制台'下,
-
执行命令“Enable-Migrations”; 一旦我们启用了数据库迁移,我们可以继续为UserProfile添加新的属性
-
要添加新属性修改IdentityModels.cs文件,例如:
public class ApplicationUser : IdentityUser { public string FirstName { get; set; } public string LastName { get; set; } public string EmailID { get; set; } }
添加新的迁移
-
一旦我们添加了这些属性,带上包pipe理器控制台并执行以下命令。
添加迁移“YouMigrationName”
这个命令将生成一个数据库脚本文件,现在执行下面的命令来对数据库运行这个脚本文件。
Update-Database
现在,所有的新属性都将变成同一个数据库表中的表字段。
我希望它可以帮助别人,如果你有一个更好的主意,请让我知道。
看看GitHub上的这些项目:
- https://github.com/kriasoft/AspNet.Identity – 身份数据库项目+ VS模板
- https://github.com/kriasoft/AspNet-Server-Template – 示例/参考项目
包括:
- SQL数据库项目模板为ASP.NET身份2.0
- entity framework数据库 – 第一提供者
- 源代码和示例
我已经成功地通过Database First与Identity Framework 2.0集成现有的数据库。 我在这里写了一篇博客文章,其中使用了ASP.NET MVC 5,Identity Framework 2.0以及Visual Studio 2013 Update 2 RTM中的SPA模板。
我希望这有助于任何人的旅程,因为它包含了我不得不在一个地方列出的几个要点。
公共类MyUser:IdentityUser {公共虚拟MyUserInfo MyUserInfo {得到; 组; }}
public class MyUserInfo{ public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } public class MyDbContext : IdentityDbContext<MyUserInfo> //Edited to MyUserInfo { public MyDbContext() : base("DefaultConnection") { } public System.Data.Entity.DbSet<MyUserInfo> MyUserInfo { get; set; } }
获取个人资料信息
当用户login时,您可以通过执行以下操作来显示configuration文件信息获取当前login的UserId
,以便您可以在ASP.NET身份系统中查看用户
var currentUserId = User.Identity.GetUserId();
在ASP.Identity系统中实例化UserManager
,以便在系统中查找用户
var manager = new UserManager<MyUser>(new UserStore<MyUser>(new MyDbContext()));
获取用户对象
var currentUser = manager.FindById(User.Identity.GetUserId());
获取有关用户的configuration文件信息
currentUser.MyUserInfo.FirstName