MySqlException:键“aspnetusers.PRIMARY”的重复条目

Posted

技术标签:

【中文标题】MySqlException:键“aspnetusers.PRIMARY”的重复条目【英文标题】:MySqlException: Duplicate entry for key 'aspnetusers.PRIMARY' 【发布时间】:2021-09-17 13:00:51 【问题描述】:

注册用户时,提示主键重复,不正确。

是asp.net核心和实体框架核心中的一个项目,带有个人账户认证。

视频https://1drv.ms/v/s!AgN4j7ZVXF5IhQ9cZeQAQrasm7SS

数据库脚本和代码 https://1drv.ms/u/s!AgN4j7ZVXF5IhQx8bUUvqkQOIicz?e=ih063u

Img error

【问题讨论】:

不要让我们在网上四处搜寻、观看视频和下载您的项目代码,只是为了看看您的问题是什么。在此处发布相关代码以及任何可能相关的示例数据。见How to Ask 和minimal reproducible example 【参考方案1】:

您可以在创建模型时进行设置:

    使用以下属性(DatabaseGenerated...)装饰您的 id 属性。

        ​public class Sites
    
                 
                     [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
    
                     public int SiteID  get; set; 
    
                     public string Name  get; set; 
                        ............
                 
    

    或者使用 DbContext 中的 ModelBuilder 来完成。

public class CMSModels : DbContext
    
    
      public DbSet<Sites> Site  get; set; 
   
      protected override void OnModelCreating(ModelBuilder modelBuilder)
      
          base.OnModelCreating(modelBuilder);
          modelBuilder.Entity<Sites>().Property(r => r.SiteID) 
                       .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
      
    

3.使用AUTO_INCREMENT:AUTO_INCREMENT属性可用于为新行生成唯一标识。

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);

【讨论】:

以上是关于MySqlException:键“aspnetusers.PRIMARY”的重复条目的主要内容,如果未能解决你的问题,请参考以下文章

MySql.Data.MySqlClient.MySqlException:重复条目

从流中读取失败 - MySqlException

找不到 MySql.Data.MySqlClient.MySqlException 插入查询错误

C# MySqlException:表不存在 - 数据库名称列出了两次

通过选择 UserID(PK) 在 ExecuteReader 上出现 MySqlException

MysqlException 未处理 DataReader 必须关闭此连接 vb.net