[asp.net-mvc]有一个方法来创建一个自定义的用户和角色而不指定 TKey IdenitityUser、 IdentityRole 和 IdentityDbContext 上吗?

发布时间: 2017/3/25 1:55:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

有什么办法来创建一个自定义的用户和角色,而无需指定 TKey stringIdentityUserIdentityRole ,和 IdentityDbContext ?我问,因为它似乎认为我不想自动生成主键 Id 再一并绝对。做过做下面, UserManager.Create(user, password) 将失败,并 EntityValidationErrorId

public class ApplicationUser : IdentityUser<string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    [Required]
    [StringLength(50)]
    public string FirstName { get; set; }

    [Required]
    [StringLength(50)]
    public string LastName { get; set; }
}

public class ApplicationUserLogin : IdentityUserLogin
{
}

public class ApplicationUserClaim : IdentityUserClaim
{
}

public class ApplicationUserRole : IdentityUserRole
{
}

public class ApplicationRole : IdentityRole<string, ApplicationUserRole>
{
    [Required]
    [StringLength(50)]
    public string ProperName { get; set; }

    [Required]
    public string Description { get; set; }
}


public class MyAppDb : IdentityDbContext<ApplicationUser, ApplicationRole, string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public MyAppDb()
        : base("MyAppDb")
    {
    }

    public static MyAppDb Create()
    {
        return new MyAppDb();
    }
}

解决方法 1:

看来,答案是"否"。如果您在指定 TKey User 和 (或) Role 为您不再创建主键。

看来我想过于复杂的事情。感谢 @dima 帮我决定非非常复杂的事。这里是这样做要成功工作,即,成功地记录在数据库中创建一个控制器和视图通过成功地得到用户和角色 (均为自定义属性)︰

更新︰ 你可能想看看底部提供更好/更简单的解决方案的链接。

public class ApplicationUser : IdentityUser
{
    [Required]
    [StringLength(50)]
    public string FirstName { get; set; }

    [Required]
    [StringLength(50)]
    public string LastName { get; set; }
}

//public class ApplicationUserLogin : IdentityUserLogin
//{
//}

//public class ApplicationUserClaim : IdentityUserClaim
//{
//}

//public class ApplicationUserRole : IdentityUserRole
//{
//}

public class ApplicationRole : IdentityRole
{
    [Required]
    [StringLength(50)]
    public string ProperName { get; set; }
}


public class MyAppDb : IdentityDbContext<ApplicationUser, ApplicationRole, string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>
{
    public MyAppDb()
        : base("MyAppDb")
    {
    }
}

然而,一个新的问题已经出现了与 UserManager 。具体而言,我得到错误 The entity type IdentityRole is not part of the model for the current context. 对这行代码 var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

更新︰ 这里固定此错误︰为什么我得到一个 IdentityRole 错误?

官方微信
官方QQ群
31647020