EF、SQL Server和重复PK错误

本文关键字:PK 错误 SQL Server EF | 更新日期: 2023-09-27 17:59:20

我写了一个程序,差不多一年了,他工作正常,但我最近在数据库中添加了一个新项目,出现错误

违反PRIMARY KEY约束"PK_dbo.Accounts"。无法在对象"dbo.Accounts"中插入重复键。重复键值为(110603267)。

我面对。没有发生什么特别的事情,我不知道为什么会出现这个错误。[Key]的Id字段,并且为long类型。并且在is标识的数据库中。这里要说的是,每当你试图添加Id("110603267")的新项目时,都会发生更改,错误是另一个Id。

使用ASP.NET MVC编写EF。请建议如何解决此问题。感谢

我的型号:

public partial class Account
{
    [Key]
    public long ID { get; set; }
    [Required(ErrorMessage = "*")]
    [System.Web.Mvc.Remote("CheckExistUser", "ManageAccount", ErrorMessage = "این نام کاربری قبلا ثبت شده", HttpMethod = "POST")]
    [StringLength(10, MinimumLength = 10, ErrorMessage = "کد ملی 10 رقم می باشد")]
    [Display(Name = "کد ملی")]
    public string Name { get; set; }
    [Display(Name = "رمز عبور")]
    [Required(ErrorMessage = "*")]
    [MinLength(6, ErrorMessage = "حداقل 6 کاراکتر")]
    //[DataType(DataType.Password)]
    public string Password { get; set; }
    [Display(Name = "تکرار رمز عبور")]
    [Required(ErrorMessage = "*")]
    // [DataType(DataType.Password)]
    [System.Web.Mvc.Compare("Password", ErrorMessage = "عدم تطابق کلمه عبور")]
    public string PasswordRe { get; set; }
    [Display(Name = "امضا")]
    public string Signature { get; set; }
    [Display(Name="ایمیل")]
    [System.Web.Mvc.Remote("CheckExistEmail", "ManageAccount", ErrorMessage = "این ایمیل قبلا ثبت شده", HttpMethod = "POST")]
    public string Email { get; set; }
    [ForeignKey("GroupID")]
    public virtual Group Group { get; set; }
    public long? GroupID { get; set; }
    [ForeignKey("ActorID")]
    public virtual Actor Actor { get; set; }
    public long? ActorID { get; set; }
    [Display(Name = "شماره همراه")]
    [Required(ErrorMessage = "*")]
    public string Mobile { get; set; }
}

我的代码:

var tempAccount = new Account
{
    Name = tempCodeMeli,
    Password = SecurityManager.HashData(mobile),
    PasswordRe = SecurityManager.HashData(mobile),
    Mobile = mobile,
    IsActive = true,
  _ Date = DateTime.Now
};
dbContext.Accounts.Add(tempAccount);
dbContext.SaveChanges();

EF、SQL Server和重复PK错误

运行

SELECT MAX(ID) FROM Accounts

然后如果你得到例如111111111运行

DBCC CHECKIDENT(tbl, RESEED, 111111112)

你的身份栏似乎有一个错误的种子。

另请参阅此答案。