2013-02-28 128 views
1

我正在檢查重複項,它發現它們並且If(isDuplicate)全部正常工作。 但代碼繼續,並提交所有提交,因爲我不告訴它停止。 我該怎麼做?停止並拋出錯誤面板,但它沒有提交?停止代碼在查詢中執行

_db.tbl_Localities.InsertOnSubmit(locality); 

bool isDuplicate = _db.tbl_Localities 
        .Any(x => x.Locality == txt_Locality.Text); 
if (isDuplicate) 
{ 
    pnl_Message.Visible = true; 
    lbl_message.Text = " Duplicate entry!"; 
    txt_Locality.Text = ""; 
} 

// Save 
// ==== 
_db.SubmitChanges(); 
+1

大概將Save部分移到'else'語句中,以便只在'isDuplicate'評估爲false時纔會完成。很難說清代碼的其餘部分。 – 2013-02-28 11:18:59

+0

謝謝它總是最明顯的..: - ) – StudentRik 2013-02-28 11:22:52

回答

3

您應該處理的條件else一部分,或者拋出一個異常,如果它是你的程序意外情況:

_db.tbl_Localities.InsertOnSubmit(locality); 

bool isDuplicate = _db.tbl_Localities 
        .Any(x => x.Locality == txt_Locality.Text); 
if (isDuplicate) 
{ 
    pnl_Message.Visible = true; 
    lbl_message.Text = " Duplicate entry!"; 
    txt_Locality.Text = ""; 
} 
else 
{ 
    // Save 
    // ==== 
    _db.SubmitChanges(); 
} 
0

使用return; if語句。

+0

我永遠不會建議使用除函數結尾以外的返回語句。當嘗試維護代碼時,它們很容易被忽略,並且在以後重構代碼變得更加困難。 – 2013-02-28 11:21:34

+0

@JustinHarvey我認爲有很多情況下'返回'是適當的。例如。警戒條件,或從開關語句返回 – 2013-02-28 11:23:40

+0

@JustinHarvey你可能在這裏是正確的。我目前正在使用一些相信的代碼。它只創建嵌套的if語句10級,這可能是另一個問題;)。特別是使用void返回它與驗證有關的事情會更好,然後將if語句嵌套在我的眼睛中。 [在void方法中使用return是不好的做法嗎?](http://stackoverflow.com/questions/1283325/is-it-bad-practice-to-use-return-inside-a-void-method) – 2013-02-28 11:28:36