как убедиться в Linq to SQL, что запись была добавлена успешно или нет?

#c# #.net #linq #linq-to-sql #c#-3.0

#c# #.net #linq #linq-to-sql #c #-3.0

Вопрос:

Я только изучаю Linq to SQL и многого не знаю. Пожалуйста, направьте и помогите мне.

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

Комментарии:

1. Если функция возвращает, запись была добавлена. Генерируется исключение, если запись не может быть добавлена.

Ответ №1:

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

Если вам нужен «флаг», вы могли вернуть bool.

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

Ответ №2:

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

 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

Ответ №3:

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

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

Ответ №4:

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