我想在具有整數作爲主鍵的表中插入數據。主鍵將被廣泛的隨機數添加。首先,我想檢查主鍵是否存在,然後插入它。在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");
}
}
}
在第一次迭代如果數字不重複的,我可以順利插入新行的數據庫。如果在第一次迭代中它是在db.SaveChanges();
後直接跳入catch中的重複項。但問題出現在第二次迭代時,隨機數不重複,它仍然跳轉以捕獲異常而不執行a=false
代碼行。
任何想法?
注意:我對使用GUID或任何其他數據類型不感興趣。
不要插入自己的PK。改用身份,讓數據庫生成id。 –
@ User.Anonymous我對這個解決方案也不感興趣。 –
@MrASD那麼......例外*說什麼*?另外:這是否發生*檢測到重複之後?因爲如果它第一次不能插入它,它仍然會作爲對'db'的一個改變來計算,所以它會嘗試(並且失敗)從那以後每插入一次* –