2016-07-29 77 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