使用Asp.Net身份数据库第一种方法

我需要整合Asp.Net最新的MVC版本与一个现有的数据库,其中有一个额外的列String Addressdbo.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上的这些项目:

包括:

  • 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