Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / entityFramework обработать ошибки при context.SaveChanges() / 19 сообщений из 19, страница 1 из 1
15.03.2016, 11:47
    #39192071
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
Добрый день! Подскажите почему не срабатывает исключение ?
Код записан через попытку:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
myRe = context.Championships.Add(myRe);
                try
                {
                    context.SaveChanges();
                    return new LogRecordBase(context.Championships.Local[0].Id, "Записано " + DateTime.Now.ToString(), TableName, false);//context.News.Local[0].Id;//если новый элемент то тут сидит Id нового эл.
                }
                catch (DbEntityValidationException ex)
                {
                    string v = GetEntityValidationErrors(ex);
                    return new LogRecordBase(0, v, TableName, true);
                }


но при указании неправильной или пустой даты(01.01.0001) все равно желтый экран смерти на строку context.SaveChanges(); :
Преобразование типа данных datetime2 в тип данных datetime привело к выходу значения за пределы диапазона.
Выполнение данной инструкции было прервано.
...
Рейтинг: 0 / 0
15.03.2016, 13:26
    #39192226
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
AspUserПреобразование типа данных datetime2 в тип данных datetime привело к выходу значения за пределы диапазона.
Это означает что пытаетесь использовать неверный тип данных.
...
Рейтинг: 0 / 0
15.03.2016, 14:35
    #39192351
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
Я это подозревал. Как обработать непредвиденную ошибку и не попадать на желтый экран смерти. Почему try - catch не работает ?
...
Рейтинг: 0 / 0
15.03.2016, 14:45
    #39192358
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
AspUserЯ это подозревал. Как обработать непредвиденную ошибку и не попадать на желтый экран смерти. Почему try - catch не работает ?
Наверное, потому что исключение не подпадает под тип DbEntityValidationException...
...
Рейтинг: 0 / 0
15.03.2016, 15:34
    #39192426
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
Код: c#
1.
2.
3.
4.
catch (Exception e) 
{
//тут остальное
}
...
Рейтинг: 0 / 0
15.03.2016, 16:14
    #39192494
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
ну хорошо а как дальше написать перебор типов ошибок ?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
catch (Exception e) 
{
 if(Ошибка типа DbEntityValidationException)
 {
  return GetEntityValidationErrors((DbEntityValidationException)e);
 }
 else
 {
   return e.Message;
 }
}
...
Рейтинг: 0 / 0
15.03.2016, 16:19
    #39192498
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
AspUserну хорошо а как дальше написать перебор типов ошибок ?
Каков смысл перебора ошибок, если Вы не знаете какую конкретно ошибку вы хотите отлавливать и обрабатывать по-особенному?
...
Рейтинг: 0 / 0
15.03.2016, 16:23
    #39192503
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
ну вот обработать
...
Рейтинг: 0 / 0
15.03.2016, 16:25
    #39192504
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
ну вот обработать DbEntityValidationException хочу

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 private string GetEntityValidationErrors(DbEntityValidationException ex)
        {
            string v = "";
            foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors)
            {
                v = "Object: " + validationError.Entry.Entity.ToString() ;

                foreach (DbValidationError err in validationError.ValidationErrors)
                {
                    v += err.ErrorMessage ;
                }
            }
            return v;
        }
...
Рейтинг: 0 / 0
15.03.2016, 16:26
    #39192506
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
...
Рейтинг: 0 / 0
15.03.2016, 16:28
    #39192509
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
                try
                {
                    context.SaveChanges();
                    return new LogRecordBase(context.Championships.Local[0].Id, "Записано " + DateTime.Now.ToString(), TableName, false);//context.News.Local[0].Id;//если новый элемент то тут сидит Id нового эл.
                }
                catch (DbEntityValidationException ex)
                {
                    // handle your specific exception here
                    string v = GetEntityValidationErrors(ex);
                    return new LogRecordBase(0, v, TableName, true);
                }
                catch (System.Exception ex)
                {
                    // handle your general exception here
                }
...
Рейтинг: 0 / 0
15.03.2016, 16:38
    #39192529
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
Просто хотелось - бы информирование о видах ошибок в отдельную функцию вынести, что бы если завтра появится новый тип ошибки , то в одном месте в этой функции и описать его ....
...
Рейтинг: 0 / 0
15.03.2016, 16:52
    #39192540
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
AspUser, вынесите обработку ошибок в global.asax.cs на событие Application_Error
...
Рейтинг: 0 / 0
15.03.2016, 17:08
    #39192557
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
Я так обрабатываю:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Friend Function InvokeMethod() As Object
        Try
            ....
        Catch ex As Exception
            ResponseWriteError(GetExMessage(ex))
            Return Nothing
        End Try
    End Function

    Friend Function GetExMessage(ByVal Ex As Exception) As String
        If Ex Is Nothing Then Return ""
        GetExMessage = Ex.Message & vbCrLf & GetExMessage(Ex.InnerException)
    End Function

Туда попадает и текст, описывающий проблему валидации.
...
Рейтинг: 0 / 0
15.03.2016, 17:09
    #39192561
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
Не вижу смысла как-то по особому обрабатывать разные типы ошибок.
...
Рейтинг: 0 / 0
15.03.2016, 17:10
    #39192565
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
AntonariyЯ так обрабатываю:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Friend Function InvokeMethod() As Object
        Try
            ....
        Catch ex As Exception
            ResponseWriteError(GetExMessage(ex))
            Return Nothing
        End Try
    End Function

    Friend Function GetExMessage(ByVal Ex As Exception) As String
        If Ex Is Nothing Then Return ""
        GetExMessage = Ex.Message & vbCrLf & GetExMessage(Ex.InnerException)
    End Function


Туда попадает и текст, описывающий проблему валидации.
Я обычно еще Stack записываю - там как правило и бывает самая ценная информация.
...
Рейтинг: 0 / 0
15.03.2016, 17:11
    #39192566
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
AntonariyНе вижу смысла как-то по особому обрабатывать разные типы ошибок.
Бывает в редких случаях необходимо выцепить и обособленно обработать определенный тип ошибки, но что-то сомневаюсь, что ТСу это реально необходимо.
...
Рейтинг: 0 / 0
15.03.2016, 20:33
    #39192729
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
AxeleronAntonariyЯ так обрабатываю:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Friend Function InvokeMethod() As Object
        Try
            ....
        Catch ex As Exception
            ResponseWriteError(GetExMessage(ex))
            Return Nothing
        End Try
    End Function

    Friend Function GetExMessage(ByVal Ex As Exception) As String
        If Ex Is Nothing Then Return ""
        GetExMessage = Ex.Message & vbCrLf & GetExMessage(Ex.InnerException)
    End Function


Туда попадает и текст, описывающий проблему валидации.
Я обычно еще Stack записываю - там как правило и бывает самая ценная информация.я записываю лишь имя процедуры, в которой выскочило исключение, в 99% случаев этого достаточно.
...
Рейтинг: 0 / 0
15.03.2016, 20:43
    #39192738
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
entityFramework обработать ошибки при context.SaveChanges()
Antonariyя записываю лишь имя процедуры, в которой выскочило исключение, в 99% случаев этого достаточно.
Счастливчик.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / entityFramework обработать ошибки при context.SaveChanges() / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]