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

本文关键字:插入 检查 是否 成功 to SQL SubmitChanges Linq | 更新日期: 2023-09-27 18:30:26

我有以下代码 -

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 ?
  • 是否有任何可能的情况,即提交更改()没有引发错误,但新插入的ID <= 0?

谢谢!

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

如果我应该更改上面的代码并添加一个 try-catch ?

不,不要这样做,因为在这种情况下,您将无法获得失败的确切原因。如果您捕获它,则故障信息将丢失,并且不会传播给用户。

但是,如果您认为向用户提供异常不是一个好主意,并且您需要捕获它,那么只需将其放在 try catch 中,如下所示:

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

是否有任何可能的情况,即提交更改()没有引发错误,但新插入的ID <= 0?

如果您得到的值>=0,那么没有必要担心这一点。

您也可以像这样使用 GetChangeSet:

获取由 DataContext 跟踪的已修改对象。

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

的代码执行objDataContext.SubmitChanges();行并出现return objUser.Id >= 0;你的插入将成功。 之后你不需要担心。 让 SQL Server 和编译器处理其余的工作

是 可以使用 try catch 来有效地捕获错误并显示适当的消息。