如何确定在Linq到SQL记录已添加成功或不

本文关键字:添加 成功 记录 SQL 何确定 Linq | 更新日期: 2023-09-27 17:50:13

我正在学习Linq to SQL,知道的不多。请指导和帮助我。

我正在使用SubmitChanges()添加一个新记录;如何确认记录已添加?例如,在使用存储过程中,我们使用发送一个标志回应用程序,但它是如何在LINQ到SQL?

如何确定在Linq到SQL记录已添加成功或不

允许代码从方法中流出。只有抛出异常时,语句才没有完成。

如果你想要一个'标志',你可以返回一个bool值。

public bool AddCustomer()
{
  try{
     ....
     db.SubmitChanges();
     return true;
  }
  catch(Exception e)
  {
    ...
    return false;
  }
}

你可以这样做;

public void Save()
{
    Northwnd db = new Northwnd(@"c:'northwnd.mdf");
    // Make changes here. 
    try
    {
        db.SubmitChanges();
    }
    catch (Exception err)
    {
        //Log error
    }
}

如果没有抛出异常,则可以假定数据保存正确。虽然另一个选项是这样的

public bool Save()
{
    Northwnd db = new Northwnd(@"c:'northwnd.mdf");
    // Make changes here. 
    try
    {
        db.SubmitChanges();
        return true;
    }
    catch (Exception e)
    {
        //Log the error
        return false;
    }
}

如果保存成功则返回True,否则返回false

参见:MSDN,如何:向数据库提交更改

注意,有一个SubmitChanges()的重载,它将允许您指定如何处理冲突。

检查http://msdn.microsoft.com/en-us/library/bb399378.aspx

此时,数据库检测到的任何错误都会导致提交进程停止,并引发异常。对数据库的所有更改都回滚,就好像没有发生任何提交一样。DataContext仍然有所有更改的完整记录。因此,您可以尝试纠正问题并再次调用SubmitChanges

Northwnd db = new Northwnd(@"c:'northwnd.mdf");
// Make changes here. 
try
{
    db.SubmitChanges();
}
catch (ChangeConflictException e)
{
    Console.WriteLine(e.Message);
    // Make some adjustments.
    // ...
    // Try again.
    db.SubmitChanges();
}