2016-07-29 93 views
1

我寫了一個程序,它是將近一年,他被工作正常,但我最近在數據庫中,錯誤增加了一個新的項目EF,SQL Server和重複的PK錯誤

違反PK_dbo的PRIMARY KEY約束」。帳戶。無法在對象'dbo.Accounts'中插入重複鍵。重複的鍵值是(110603267)。

我面臨。沒有什麼特別的事情發生,我不知道爲什麼會出現這個錯誤。 [Key]的Id字段,類型爲long。並且在數據庫中是身份。 可以這樣說,任何時候您嘗試添加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(); 
+0

需要更多的細節,特別是現有的代碼。 – cjb110

+2

你能顯示一些代碼嗎?聽起來就像你試圖插入一個已經存在但需要唯一的Id的實體。 –

+2

而且不要只是粘貼全部**代碼。製作[MCVE]來說明您的問題。 –

回答

0

運行

SELECT MAX(ID) FROM Accounts 

,然後如果你如111111111運行

DBCC CHECKIDENT(tbl, RESEED, 111111112) 

看起來像您的標識列有錯誤的種子。請參閱this answer