2013-12-18 39 views
53

我需要Asp.Net最新版本的MVC与它有一个附加列String Addressdbo.AspNetUsers使用Asp.Net身份数据库第一种方法

现有数据库整合我需要建立一个具有属性的实例ApplicationUser地址。

任何想法如何做到这一点?

+1

有趣的HTTP配置文件信息:// WWW。 itorian.com/2013/11/customize-users-profile-in-aspnet.html – GibboK

+0

相关http://stackoverflow.com/questions/19940014/asp-net-identity-with-ef-database-first-mvc5 – GibboK

回答

51

一个可行的解决方案,适用于我,基本上我能够将Asp.Net Identity用户配置文件与现有数据库集成。

获取Asp.Identity表:

  • 与认证个人用户的帐号创建MVC项目
  • 打开Web.config中的DefaultConnection下面列出的DB。它将被称为(aspnet- [timestamp]或类似的东西)。
  • 使用SQL Server Management Studio(附加数据库for mdc)对数据库表进行脚本编写。

或者使用类似http://identity.codeplex.com/

与您现有的数据库整合:

  • 插入脚本表到SQL Server Management Studio中现有的数据库。
  • 定制并添加关系到ApplicationUser(如有必要)。
  • 创建新的Web项目> MVC> DB第一个项目>导入DB与EF ...。
  • 在IdentityModels.cs中,更改ApplicationDbContext:base(“DefaltConnection”)以使用项目的DbContext。

现在,您的数据库中的Asp.Identity表与您的应用程序中的ER模型一起使用。

Asp.Identity档案添加新的特性:

  • 启用实体框架代码优先数据库迁移,只需在VS去下工具“程序包管理器控制台”,
  • 执行命令“启用的迁移” ;一旦我们启用了数据库迁移,我们可以继续为我们的用户配置添加新的特性

  • 要添加新的属性修改IdentityModels.cs文件,例如:


public class ApplicationUser : IdentityUser 
{ 
public string FirstName { get; set; } 
public string LastName { get; set; } 
public string EmailID { get; set; } 
} 

添加新迁移

  • 一旦我们添加了这些属性,请打开Package Manager Console并执行以下命令。

    添加迁移“YouMigrationName”

该命令将生成一个数据库脚本文件,现在执行以下命令来对数据库运行该脚本文件。

Update-Database 

现在,所有新属性都将变成同一个数据库表中的表字段。

我希望它可以帮助别人,如果你有更好的想法,请让我知道。

+1

其实这不起作用 为了我。我已经启用了迁移,添加了新的属性,添加了新的迁移,但是当我尝试“更新数据库”时,它说“数据库中已经有一个名为'AspNetRoles'的对象。”所以看起来,它不会更新数据库,而是尝试重新创建它。 – bsaglamtimur

+1

我可以知道为什么所有的asp.net mvc都使用localdb作为默认身份验证数据库吗? – Timeless

+19

为什么使用迁移,如果它是数据库优先的方法?我的理解是,迁移是以代码优先的方式将代码更改应用于数据库 – Andrey

19

看看这些项目在GitHub上:

其中包括:

  • 用于ASP.NET Id的SQL数据库项目模板实体2.0
  • 实体框架数据库为第一供应商(S)
  • 源代码和样本

enter image description here

+0

任何人都得到了任何其他资源如何使用https://github.com/kriasoft/AspNet.Identity作为其文档没有说很多,如果我不是从头开始。我只是想将我的身份上下文链接到我的数据库第一个上下文/。 – Zapnologica

+1

@Zapnologica,以及..它更适合于数据库优先的方法,在那里你根据实际的数据库模式生成EF DbContext/Model。 –

+0

那么它不能与数据库第一次使用?只有这样我才能想到的是重新实现所有的商店,并使用我自己的'dbContext'指向我的数据库第一个模型? – Zapnologica

19

我已经成功地在现有的数据库通过数据库与Identity Framework 2.0的第一累计。我已经写在上面here博客文章,它使用ASP.NET MVC 5,身份Framework 2.0中,并从Visual Studio 2013更新2 RTM的SPA模板。

我希望这可以帮助任何人在他们的旅程,因为它包含在一个地方,我必须弄清楚我自己没有列出的几点。

+0

非常感谢分享 – GibboK

+0

感谢Daniel,让它有用。 – Antrim

+2

嗨丹尼尔,试着遵循你的优秀博客条目(谢谢),但数据库(localdb)将不得不在一个单独的程序集中存在。无法让它工作。例如,如何从Web应用程序web.config - | DataDirectory |指向另一个程序集中的数据库没有任何意义。任何例子? – Jay

-1

public class MyUser:IdentityUser { public virtual MyUserInfo MyUserInfo {get;组; } }

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; } 
} 

获取档案信息

当用户登录时,可以显示通过执行配置文件信息如下 获得当前登录的UserId,所以你可以看看在ASP用户最多.NET身份系统

var currentUserId = User.Identity.GetUserId(); 

在ASP中实例化UserManager。识别系统,让您可以看一下用户在系统

var manager = new UserManager<MyUser>(new UserStore<MyUser>(new MyDbContext())); 

获取用户对象

var currentUser = manager.FindById(User.Identity.GetUserId()); 

获取有关用户

currentUser.MyUserInfo.FirstName 
相关问题