与EF数据库第一MVC5的ASP.NET身份如何实现?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (95)

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

以下是我所做的:

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

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兼容?

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

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

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

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

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

    override public string Id { get; set; }
    override public string UserName { get; set; }
    override public string PasswordHash { get; set; }
    override public string SecurityStamp { get; set; }
提问于
用户回答回答于

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

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" />

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

用户回答回答于

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

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

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

扫码关注云+社区

领取腾讯云代金券