簡體   English   中英

Linq to SQL-SubmitChanges()-檢查插入是否成功

[英]Linq to SQL - SubmitChanges() - Check if insert was successful

我有以下代碼-

public bool InsertUser(params) 
{
    User objUser = new User(params);
    objDataContext.Users.InsertOnSubmit(objUser);
    objDataContext.SubmitChanges();
    return objUser.Id >= 0;
}

調用方法-

if (!_database.InsertUser(params))
{
    //WriteErrorMessage 
}

從各篇文章中我了解到,如果我們想知道插入是否成功,我們應該檢查是否拋出了任何異常。

但是,上面的代碼取決於新插入的ID是否> = 0。

可以請指導-

  • 如果我應該更改上面的代碼並添加try-catch呢?
  • 是否有任何可能的情況,SubmitChanges()不會拋出錯誤,而是新插入的Id <= 0?

謝謝!

如果我應該更改上面的代碼並添加try-catch呢?

不,不要那樣做,因為那樣的話您將無法獲得失敗的確切原因。 如果您抓住了它,那么失敗的信息將丟失並且不會傳播給用戶。

但是,如果您認為向用戶授予異常不是一個好主意,並且需要捕獲它,則只需將其放置在try catch中,如下所示:

public bool SubmitChanges()
{
  try{
     //your code
     db.SubmitChanges();
     return true;
  }
  catch(Exception e)
  {
    // some code to catch exception
    return false;
  }
}

是否有任何可能的情況,SubmitChanges()不會拋出錯誤,而是新插入的Id <= 0?

如果您獲得的值> = 0,則無需擔心。

您還可以像這樣使用GetChangeSet

獲取DataContext跟蹤的已修改對象。

ChangeSet cs = db.GetChangeSet();
Console.Write("Changes: {0}", cs);

如果您的代碼執行objDataContext.SubmitChanges();objDataContext.SubmitChanges(); return objUser.Id >= 0; 您的插入將成功。 之后您不必擔心。 讓sql server和您的編譯器負責其余的工作

是的,可以使用try catch來有效地捕獲錯誤並顯示適當的消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM