2016-07-29 4 views
1

は、私は彼が正常に働いていたほぼ1年でプログラムを書いたが、私は最近、PRIMARY KEY制約「PK_dboのエラーEF、SQL ServerとPKのエラーを複製

違反して、データベースに新しい項目を追加しました。アカウント。オブジェクト 'dbo.Accounts'に重複キーを挿入できません。重複するキー値は(110603267)です。

私は直面しています。特別なことは何も起こっていない、と私はこのエラーが与えられた理由を知らない。 [Key]のIdフィールドで、long型です。そして、アイデンティティはデータベースにあります。 ここでは、IDの新しい項目(「110603267」)を追加しようとするたびに変更され、そのエラーがもう1つの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 run

DBCC CHECKIDENT(tbl, RESEED, 111111112) 

あなたのID列のように思われます。

this answerも参照してください。

関連する問題