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

时间:2016-01-14 12:19:42

标签: c# .net

我有以下代码 -

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?

谢谢!

2 个答案:

答案 0 :(得分:4)

  

如果我应该更改上面的代码并添加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);

答案 1 :(得分:1)

如果您的代码执行第objDataContext.SubmitChanges();行并且return objUser.Id >= 0;,则您的插入将成功。之后你不必担心。让sql server和你的编译器来处理其余的

是可以使用try catch有效捕获错误并显示相应的消息。