【问题标题】:Custom IdentityRole<TKey, TUserRole> fails when hiding the Id property隐藏 Id 属性时自定义 IdentityRole<TKey, TUserRole> 失败
【发布时间】:2016-09-05 07:10:51
【问题描述】:

与此相关的问题,在这里...

UserManager.AddToRole not working - Foreign Key error

在我的应用程序中,我有一个自定义角色实现

public class Role : IdentityRole<Guid, UserRole>
{
    public const string Admininstrator = "Administrator";

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public new Guid Id { get; set; }
}

但使用时会导致此错误

INSERT 语句与 FOREIGN KEY 约束冲突 “FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId”。发生了冲突 在数据库“TestDatabase”、表“dbo.AspNetRoles”、“Id”列中。

罪魁祸首是这个……

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public new Guid Id { get; set; }

从类中删除它并手动创建唯一 ID 工作...

public Role()
{
    Id = Guid.NewGuid();
}

我希望数据库为我执行此操作 - 知道为什么会失败吗?

【问题讨论】:

    标签: c# asp.net sql-server entity-framework asp.net-identity


    【解决方案1】:

    删除

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public new Guid Id { get; set; }
    

    只是

       public class Role : IdentityRole<Guid, UserRole>{ }
    

    并使用流利的 api 添加DatabaseGeneratedOption.Identity!在自定义IdentityDbContext 类中添加

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
         base.OnModelCreating(modelBuilder);
         // identity
         modelBuilder.Entity<Role>().Property(r => r.Id)
             .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    }
    

    当您添加迁移时,您将看到 (Id = c.Guid(nullable: false, identity: true))

    CreateTable(
        "dbo.AspNetRoles",
         c => new
              {
                    Id = c.Guid(nullable: false, identity: true),
                    Name = c.String(nullable: false, maxLength: 256),
              })
        .PrimaryKey(t => t.Id)
        .Index(t => t.Name, unique: true, name: "RoleNameIndex");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 2020-01-31
      相关资源
      最近更新 更多