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

我有以下代码-

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);

LINQ to SQL中的“无法识别的表达式节点数组索引linq”异常 - c#

这是我的LINQ,其中我将DateTime类型的字段与当前日期进行了比较- var srs = (from s in dcDistrict.ScheduledReportStatus where s.ReportConfigId.Equals(ConfigId) && s.Status.HasValue && s.Status…

是否有一种简单的方法来处理linq-to-entities查询中的重音符号 - c#

假设我有可汗的数据库。我可以使用此实体框架代码按名称提取可汗Khan khan=context.Khans.Where(x=>x.Name.Contains("Öge")).Single(); 问题在于,在实践中,用户将键入“ Oge”而不是“Öge”,并且不会获得任何匹配项。有没有一种简单的方法可以解决这个问题,以便带有重音符号的…

LINQ to XML语法 - c#

我有一个简单的POCO类,用于保存从XML文件提取的数据,该XML文件定义如下:public class Demographics { public string FirstName { get; set; } public string LastName { get; set; } public string MiddleName { get; set; …

Linq to SQL获取多列 - c#

我正在开发一个asp.net MVC Web应用程序,其中使用Linq to Sql通过jquery和ajax从数据库获取结果。我的模型有以下代码 public IEnumerable<string> getComments(long problemID) { var comment = from c in _objectModel.Commen…

C#Linq包含语句 - c#

我写了自己的对象Tag,如果要找到.Value,我想包含它(我想像在SQL中那样模拟WHERE IN)public static List<Question> GetQuestionsIdsWithTags(List<Tag> tags) { IEnumerable<Question> res = from t in da…