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

标签 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 ?

谢谢!

最佳答案

If I should change above code and add a try-catch instead?

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

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

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

Is there any possible scenario where no error is thrown by SubmitChanges() but newly inserted Id <= 0 ?

如果您获得的值 >=0,则无需担心这一点。

您还可以使用GetChangeSet像这样:

Gets the modified objects tracked by DataContext.

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

关于c# - Linq to SQL - SubmitChanges() - 检查插入是否成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34789466/

相关文章:

c# - 如何编写一个可以用 `arr[key]` 索引的类(如数组)?

.net - 启用 Ajax 的 .NET 服务器控件已注册

c# - 反射说接口(interface)方法在实现类型中是虚拟的,而实际上它们不是?

c# - 使用 DateTime 获取前几个月的名称

c# - .NET 或 COM HID iCLASS 智能卡读卡器

c# - 将预先存在的 AutoCAD 图形插入当前图形

c# - 使用 DSL 生成 C# 代码

.net - 使用 Microsoft.WindowsAzure.StorageClient.TableServicesContext 并检测并发更新冲突

c# - 关于 NHibernate 的 GuidCombGenerator 的几个问题

c# - 在字符串中查找字符串可以为空的单词(有时)