#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();
}