2016-07-29 16 views
1

schrieb ich ein Programm, das fast ein Jahr er richtig funktioniert, aber ich hinzugefügt vor kurzem ein neues Element in der Datenbank mit FehlernEF, SQL Server und duplizieren PK Fehler

Verletzung der PRIMARY KEY-Einschränkung ‚PK_dbo. Konten'. Kann keinen doppelten Schlüssel in Objekt 'dbo.Accounts' einfügen. Der doppelte Schlüsselwert ist (110603267).

Ich konfrontiert. Nichts Besonderes ist passiert, und ich weiß nicht, warum dieser Fehler gegeben wurde. Id-Feld für [Key] und vom Typ long. Und ist in der Datenbank für ist Identität. Hier ist zu sagen, dass jedes Mal, wenn Sie versuchen, ein neues Element der ID ("110603267") hinzuzufügen, geändert wurde und der Fehler eine andere ID war.

Mit ASP.NET MVC wird EF geschrieben. Bitte geben Sie an, was zu tun ist, um dieses Problem zu beheben. Thankful

mein Modell:

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; } 
} 

mein Code:

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

weitere Details erforderlich, insbesondere des bestehenden Codes. – cjb110

+2

Können Sie Code anzeigen? Klingt so, als ob Sie versuchen, eine Entität mit einer ID einzufügen, die bereits existiert, aber eindeutig sein muss. –

+2

Und fügen Sie nicht einfach ** all ** Ihren Code ein. Machen Sie ein [MCVE], um Ihr Problem zu veranschaulichen. –

Antwort

0

Run

SELECT MAX(ID) FROM Accounts 

und dann, wenn Sie erhalten zum Beispiel 111111111 run

DBCC CHECKIDENT(tbl, RESEED, 111111112) 

Scheint wie Ihre Identitätsspalte hat einen falschen Startwert.

Siehe auch this answer.