整数をプライマリキーとして持つテーブルにデータを挿入したいとします。主キーは、広範囲の乱数によって追加されます。まず、プライマリキーが存在するかどうかを確認してから挿入します。数が、私は成功し、データベースに新しい行を挿入することができます重複していない場合SQLサーバーテーブルに既存のプライマリキーを追加しない
public static void Insert()
{
bool a=true;
while (a != false)
{
try
{
db.test.Add(new test() //insert into test table new data
{
Id = rand.Next(1, 10),
name = "test",
surname = "test"
});
db.SaveChanges();
a=false;
}
catch (Exception)
{
Console.WriteLine("Duplicate");
}
}
}
最初の反復で:
は、ここに私のコードです。最初の反復では、の後に重複するエントリがある場合は、私は直接catchにジャンプします。しかし、問題は、2番目の反復で乱数が重複しない場合に、a=false
行のコードを実行せずに例外をキャッチするためにジャンプするときに発生します。
注:GUIDや他のデータ型の使用には興味がありません。
自分自身を挿入しないでください。代わりにIDを使用し、データベースにIDを生成させます。 –
@ User.Anonymous私はその解決策にも興味がありません。 –
@MrASDまあ...例外は何と言うの?また、重複が検出された後で*これは起こりますか?初めて挿入することができなければ、それは 'db'に対する変更としてカウントされるので、それ以降はそれを挿入するように試みるでしょう* –