как быть уверенным в том, что в Linq to SQL запись была успешно добавлена ​​или нет? - PullRequest
2 голосов
/ 12 апреля 2011

Я только учу Linq для SQL и не знаю много. Будь добр, помоги мне.

Я добавляю новую запись с помощью SubmitChanges (); Как я могу подтвердить, что запись была добавлена? Например, при использовании хранимых процедур мы используем для отправки флага обратно в приложение, но как это делается в LINQ to SQL? Пожалуйста, ведите меня.

Ответы [ 4 ]

3 голосов
/ 12 апреля 2011

Позвольте вашему коду вытекать из вашего метода.Только когда выброшено исключение, ваш оператор не будет завершен.

Если вы хотели 'флаг', вы могли бы вернуть bool.

public bool AddCustomer()
{
  try{
     ....
     db.SubmitChanges();
     return true;
  }
  catch(Exception e)
  {
    ...
    return false;
  }
}
2 голосов
/ 12 апреля 2011

См .: MSDN, Как: отправить изменения в базу данных

Обратите внимание, что существует перегрузка SubmitChanges () , которая позволит вам определить, какобрабатывать конфликты.

2 голосов
/ 12 апреля 2011

Вы можете сделать что-то вроде этого;

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

1 голос
/ 12 апреля 2011

Проверьте это 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();
}
...