与EF数据库第一MVC5的ASP.NET身份

是否有可能使用新的Asp.net身份与数据库第一和EDMX? 或者只与代码第一?

以下是我所做的:

1)我做了一个新的MVC5项目,并让新的Identity在我的数据库中创建了新的用户和角色表。

2)然后我打开我的Database First EDMX文件,并拖入新的Identity Users表中,因为我有其他与之相关的表。

3)保存EDMX后,Database First POCO生成器将自动创建一个User类。 但是,UserManager和RoleManager需要从新的Identity名称空间(Microsoft.AspNet.Identity.IUser)继承的User类,因此使用POCO User类将不起作用。

我想一个可能的解决方案是编辑我的POCO代类让我的用户类继承IUser?

或者ASP.NET身份只与Code First Design兼容?

++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++

更新:下面是Anders Abel的建议,这就是我所做的。 它的工作,但我想知道是否有一个更优雅的解决方案。

1)通过在与我的自动生成的实体相同的命名空间中创建一个部分类来扩展我的实体用户类。

namespace MVC5.DBFirst.Entity
{
    public partial class AspNetUser : IdentityUser
    {
    }
}

2)我改变了我的DataContext从IdentityDBContext而不是DBContext继承。 请注意,每次更新EDMX并重新生成DBContext和Entity类时,都必须将其重新设置为此。

 public partial class MVC5Test_DBEntities : IdentityDbContext<AspNetUser>  //DbContext

3)在自动生成的用户实体类中,必须将override关键字添加到以下4个字段中,或将这些字段注释掉,因为它们是从IdentityUser继承的(步骤1)。 请注意,每次更新EDMX并重新生成DBContext和Entity类时,都必须将其重新设置为此。

    override public string Id { get; set; }
    override public string UserName { get; set; }
    override public string PasswordHash { get; set; }
    override public string SecurityStamp { get; set; }

应该可以在POCO和Database First中使用身份系统,但是您必须做一些调整:

  • 更新用于POCO生成的.tt文件以使实体类成为partial 。 这将使您可以在单独的文件中提供额外的实施。
  • 在另一个文件中部分实现User
  • partial User : IUser
    {
    }
    

    这将使User类实现正确的界面,而不触及实际生成的文件(编辑生成的文件总是一个坏主意)。


    我的步骤非常相似,但我想分享。

    1)创建一个新的MVC5项目

    2)创建一个新的Model.edmx。 即使它是一个新的数据库并且没有表格。

    3)编辑web.config并替换这个生成的连接字符串:

    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)v11.0;AttachDbFilename=|DataDirectory|aspnet-SSFInventory-20140521115734.mdf;Initial Catalog=aspnet-SSFInventory-20140521115734;Integrated Security=True" providerName="System.Data.SqlClient" />
    

    与此连接字符串:

    <add name="DefaultConnection" connectionString="Data Source=.SQLExpress;database=SSFInventory;integrated security=true;" providerName="System.Data.SqlClient" />
    

    之后,构建并运行应用程序。 注册一个用户,然后创建表格。


    编辑:与EF数据库第一MVC5 CodePlex项目模板的ASP.NET身份。


    我想使用现有的数据库并与ApplicationUser建立关系。 这是我如何使用SQL Server完成的,但同样的想法可能适用于任何数据库。

  • 创建一个MVC项目
  • 打开Web.config中DefaultConnection下列出的数据库。 它会被称为(aspnet- [timestamp]或类似的东西。)
  • 脚本数据库表。
  • 将脚本表插入SQL Server Management Studio中的现有数据库。
  • 定制并添加关系到ApplicationUser (如有必要)。
  • 创建新的Web项目> MVC> DB第一个项目>使用EF导入数据库...排除您插入的标识类。
  • IdentityModels.cs中,更改ApplicationDbContext :base("DefaltConnection")以使用项目的DbContext。

  • 编辑: Asp.Net身份类图 在这里输入图像描述

    链接地址: http://www.djcxy.com/p/90215.html

    上一篇: ASP.NET Identity with EF Database First MVC5

    下一篇: Modelling polymorphic associations database