2017-05-06 15 views
0

フォームレコードを保存しようとしましたが、クライアント側からエンティティを取得しましたが、たびにPersonalId = 0がかかり、プライマリキーの重複エラーが発生します。どのようにC#の重複プライマリキーを防ぐには?

どうすれば修正できますか?これを通過する

public ActionResult SavePersonal(PersonalViewModel model) 
{ 
    try 
    { 
     StorageSystemEntities1 db = new StorageSystemEntities1(); 

     Personal personal = new Personal(); 
     personal.PName = model.PName; 
     personal.PLastname = model.PLastname; 
     personal.PStatus = model.PStatus; 
     personal.ShopId = model.ShopId; 
     personal.PPassword = model.PPassword; 
     personal.GenderID = model.GenderID; 
     personal.DOB = model.DOB; 
     personal.Email = model.Email; 
     personal.JobStartDate = model.JobStartDate; 
     personal.PAuthorisation = model.PAuthorisation; 
     personal.Phone = model.Phone; 

     db.Personal.Add(personal); 
     db.SaveChanges(); 

     int latestPersonalId = personal.PersonalID; 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 

    return RedirectToAction("_AddPersonal"); 
} 
+2

あなたは、データベーステーブルのIDENTITY列を使用して、あなたがアイデンティティシードと増分^^^^同じ列 – Steve

+1

に主キー制約を作成します。 Entity Frameworkを使用している場合は、データベース内のPersonalID'プロパティ –

+0

の属性として '[DatabaseGenerated(DatabaseGeneratedOption.Identity)]'を設定する必要があります。私はPersonalIDを持っています。常に0をとります – muco

答えて

0

、いくつかの方法、すなわち:

  • (すなわちGUID)のアプリで一意なIDを生成

  • 同じことが、あなたのDBエンジン(つまり、SQL手順)で

  • これまでの回答で述べたようにSQL IDを使用するため、アプリで何もしないでください。

  • は、上記のいずれかがあなたのPersonalクラスで

0

使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)]に役立ちます願っています。

例:

public class Personal { 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int PersonalId {get;set;} 
    public string PName {get;set;} 
    public string PLastname {get;set;} 
    public string PStatus {get;set;} 
    public int ShopId {get;set;} 
    [DataType(DataType.Password)] 
    public string PPassword {get;set;} 
    public string GenderID {get;set;} 
    public DateTime? DOB {get;set;} 
    [EmailAddress] 
    public string Email {get;set;} 
    public DateTime? JobStartDate {get;set;} 
    public string PAuthorisation {get;set;} 
    [DataType(DataType.PhoneNumber)] 
    public string Phone {get;set;} 
} 
関連する問題