2013-02-28 119 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