私は、プロファイルという名前のテーブルにカウンタフィールドがあり、フォーム送信時にカウンタフィールドを取得し、カウンタと更新プロファイルに+1します表。インクリメントされたカウンタは変数に格納され、別のテーブル[Bidder]に新しいレコードを作成するために使用されます。問題は、複数のフォームがレコード値を複製し、同時にそこに提出されたときである私は、重複ROIDを作成する防ぐにはどうすればよい入札者テーブルentityframeworkを使用してdbから重複する値を取得しないようにする方法
Profile profile = db.Profile.Where(w => w.TenderId == tender_Id && w.IsDeleted == false).FirstOrDefault();
int submission = profile.TotalSubmission + 1;
if (profile != null) {
profile.TotalSubmission = submission;
profile.ModifiedBy = user_id;
profile.ModifiedOn = DateTime.Now;
db.Entry(profile).State = EntityState.Modified;
db.SaveChanges();
}
bid.ROId = string.Format("RO{0}", submission);
db.Entry(bid).State = EntityState.Modified;
db.SaveChanges();
に作成されますか?
列に一意のインデックスを作成します。または、より良い、IDの列を使用 – Rhumborl
@ Rhumborl、どのテーブルですか?プロフィールまたは入札ですか? – KylE
コードを変更せずに直接問題を解決する "ロック"でコードを囲むことができます。 @Rhumborlが言ったように、データベースを使用してキーを生成する(つまり、SQL ServerのID列の場合)というユニークなIDを作成するための異なるアプローチを検討することをお勧めします。 –