将标识从字符串更改为int后,无法在Seed方法上添加新角色

奥斯瓦尔多

下面经过文章为“更改主键为用户在ASP.NET身份”加入种子法新角色时,我有一个问题。

无法将NULL值插入列'Id',表'X.dbo.AspNetRoles'; 列不允许为空。INSERT失败。
该语句已终止。

我的代码是:

protected override void Seed(ApplicationDbContext context)
{
    var roleStore = new CustomRoleStore(context);
    var roleManager = new ApplicationRoleManager(roleStore);

    if (!roleManager.RoleExists("Administrador"))
        roleManager.Create(new CustomRole("Administrador"));
}

错误发生在最后一行:roleManager.Create ...

加上本教程,我在IdentityConfig.cs中具有此实现:

public class ApplicationRoleManager : RoleManager<CustomRole, int>
{
    public ApplicationRoleManager(IRoleStore<CustomRole, int> roleStore)
        : base(roleStore) { }

    public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
    {
        return new ApplicationRoleManager(new RoleStore<CustomRole, int, CustomUserRole>(context.Get<ApplicationDbContext>()));
    }
}

身份=错误

编辑1

public partial class ApplicationDbContext : IdentityDbContext<ApplicationUser, CustomRole, int, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}
DSR

我可以为此做一些工作。您可以手动更新数据库上的CustomRole表以具有自动增量值。然后按照以下说明覆盖EF OnModelCreating。

public partial class ApplicationDbContext : IdentityDbContext<ApplicationUser, CustomRole, int, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

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

    protected override void OnModelCreating(DbModelBinder modelBinder)
    {
        modelBinder.Entity<CustomRole>().ToTable("CustomRole"); // This may be not needed, check it.

        modelBinder.Entity<CustomRole>().Property(r => r.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将标识从字符串更改为int后,无法在Seed方法上添加新角色

来自分类Dev

将字符串更改为int

来自分类Dev

js无法将日期字符串更改为新格式

来自分类Dev

将IP地址从int更改为字符串的问题

来自分类Dev

将字符串c更改为int

来自分类Dev

将IP地址从int更改为字符串的问题

来自分类Dev

将字符串数组更改为 int 数组

来自分类Dev

将字节更改为字符串的简单方法?

来自分类Dev

使用sed命令将特定行上的字符串更改为特定字符串

来自分类Dev

如何将字符串向量更改为拆分字符串后得到的子字符串?

来自分类Dev

将列表更改为字符串

来自分类Dev

将字符串更改为整数

来自分类Dev

将日期更改为字符串

来自分类Dev

XSLT 1.0翻译字符串-将字符更改为新行

来自分类Dev

无法从字符变化将列更改为整数,但需要查询字符串>

来自分类Dev

如何将-replace中捕获的字符串更改为大写int结果?

来自分类Dev

Powershell函数调用将传递的字符串更改为int

来自分类Dev

如何在C#中使用Convert.ToSingle()将字符串更改为int

来自分类Dev

在mongoDB中查询将字符串更改为int需要很长时间

来自分类Dev

将值更改为字符串 Python 中的转换器 Int64

来自分类Dev

添加数字后将ascii更改为字符串

来自分类Dev

将字符串中的字符更改为数字

来自分类Dev

将 ASCII 更改为字符串中的字符

来自分类Dev

在C#中将char更改为int或字符串

来自分类Dev

在C中从字符串更改为int时溢出

来自分类Dev

将字符串字段值更改为其子字符串的最有效方法

来自分类Dev

如何使用数组中的方法将date_range更改为字符串?

来自分类Dev

需要帮助将Java代码更改为方法addText(字符串文本)

来自分类Dev

为什么将传递给方法的字符串文字更改为参数之一?

Related 相关文章

  1. 1

    将标识从字符串更改为int后,无法在Seed方法上添加新角色

  2. 2

    将字符串更改为int

  3. 3

    js无法将日期字符串更改为新格式

  4. 4

    将IP地址从int更改为字符串的问题

  5. 5

    将字符串c更改为int

  6. 6

    将IP地址从int更改为字符串的问题

  7. 7

    将字符串数组更改为 int 数组

  8. 8

    将字节更改为字符串的简单方法?

  9. 9

    使用sed命令将特定行上的字符串更改为特定字符串

  10. 10

    如何将字符串向量更改为拆分字符串后得到的子字符串?

  11. 11

    将列表更改为字符串

  12. 12

    将字符串更改为整数

  13. 13

    将日期更改为字符串

  14. 14

    XSLT 1.0翻译字符串-将字符更改为新行

  15. 15

    无法从字符变化将列更改为整数,但需要查询字符串>

  16. 16

    如何将-replace中捕获的字符串更改为大写int结果?

  17. 17

    Powershell函数调用将传递的字符串更改为int

  18. 18

    如何在C#中使用Convert.ToSingle()将字符串更改为int

  19. 19

    在mongoDB中查询将字符串更改为int需要很长时间

  20. 20

    将值更改为字符串 Python 中的转换器 Int64

  21. 21

    添加数字后将ascii更改为字符串

  22. 22

    将字符串中的字符更改为数字

  23. 23

    将 ASCII 更改为字符串中的字符

  24. 24

    在C#中将char更改为int或字符串

  25. 25

    在C中从字符串更改为int时溢出

  26. 26

    将字符串字段值更改为其子字符串的最有效方法

  27. 27

    如何使用数组中的方法将date_range更改为字符串?

  28. 28

    需要帮助将Java代码更改为方法addText(字符串文本)

  29. 29

    为什么将传递给方法的字符串文字更改为参数之一?

热门标签

归档