EDIT 3Устранение SqlException
Чтобы было ясно, на данный момент:
1) Я вижу исключения SQL в выводе, но это не «Ловля» никаких исключений ... выполнения кода как правило, и единственная причина, по которой я знаю, есть исключения, что я смотрю окно вывода. Кажется, что объект работает для первоначального чтения (он возвратил ожидаемые данные).
2) Сущность зависает, когда я пытаюсь использовать .SaveChanges, но я не могу «поймать» любые исключения ... он просто зависает. Не знаю, почему?
Оригинал Сообщение У меня есть C# консольное приложение, с использованием .NET 4.5 с помощью Entity Framework 6.1.3
Я могу прочитать мою базу данных, так что я знаю строку соединения и учетные данные являются правильными. Моя проблема заключается в том, что, когда я делаю DbContext.SaveChanges()
мои зависания приложения, и если я повесить курсор над методом SaveChanges
в Visual Studio, всплывающий показывает, что он бросил:
System.Data.Entity.InfrastructureDbUpdateException
System.Data.Entity.InfrastructureConcurrencyException
System.Data.Entity.Validation.DbEntityValidationException
System.NoSupportedException
System.ObjectDisposedException
System.InvalidOperationException
Я попытался захватить немногие из них в соответствии с приведенным ниже кодом, но при чтении других статей SO, кажется, что я не могу поймать эти исключения? Кто-нибудь знает, КАК их поймать?
Пожалуйста, обратите внимание, что перед делать эти SaveChanges
, я был возможности читать из другой таблицы, так что я знаю, мои документы и соединение строк работы, и что у меня есть связи и организация, кажется, по крайней мере, будет работать.
Еще одна информация: это работало несколько дней назад ... Я просто не знаю, что я мог сделать, чтобы «сломать»! Использование SQL Server на другом сервере.
Строка соединения является:
<add name="DataContext"
connectionString="data source=1.2.3.4;initial catalog=db1;user id=user1;password=pwd1;MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
Так Суть заключается в том, что мое приложение зависает при выполнении .SaveChanges
и я понятия не имею, почему ...
try
{
return _context.SaveChanges();
}
catch (DbUpdateException e)
{
Console.WriteLine(e.ToString());
Console.ReadLine();
return 0;
}
catch (DbEntityValidationException dbEx) // added for debug.
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}",
validationError.PropertyName,
validationError.ErrorMessage);
Console.WriteLine(string.Format("Property: {0} Error: {1}",
validationError.PropertyName,
validationError.ErrorMessage));
Console.ReadLine();
}
}
return 0;
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
Console.ReadLine();
return 0;
}
EDIT 1
Исключения подтверждают, что они не реальны. Это всплывающее окно, предоставляемое инструментами ReSharper или MS Productivity, чтобы показать мне возможные исключения ... Думаю.
Так что я остался с тобой на .SaveChanges
, не имея возможности узнать почему?
EDIT 2
Я вижу, что в первом чтении базы данных, вывод окна отладки показывает исключения, даже если читать работал! Обратите внимание, что это также находится внутри блока try/catch (Catch (Exception e)
), и исключения НЕ попадают!
Первый шанс, исключение типа «System.Data.SqlClient.SqlException» произошло в System.Data.dll
Первый шанс, исключение типа «System.Data.Entity.Core.EntityCommandExecutionException»произошел в EntityFramework.dll
Первого шанса исключение типа„System.Data.Entity.Core.EntityCommandExecutionException“произошло в EntityFramework.SqlServer.dll
Проверьте сообщение InnerException и отредактируйте его, чтобы добавить его. – CodeNotFound
Как? Я даже не могу поймать внешнее исключение. Я просто знаю, что есть исключения, наведя указатель мыши на SaveChanges, но приложение зависает. –
Затем нажмите «Просмотреть детали», когда вы наведите указатель мыши – CodeNotFound