powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / EF, вытащить текст ошибки (из триггера)
25 сообщений из 25, страница 1 из 1
EF, вытащить текст ошибки (из триггера)
    #39759198
denis_viktorovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый!
Веб интерфейс к <Д, MVC 5, EF при вставке в табличку, получаю из триггера (T-SQL) ошибку (там reiaserror с внятным текстом в сообщении, типа "нельзя записать значение - потому что...."). В Exception вижу "An error occurred while updating the entries. See the inner exception for details." При отладке в exc.InnerException я вижу то же самое сообщение, а вот в нем еще один InnerException и там в message то самое сообщение, что мне нужно. Учитывая, что вставки могут быть каскадными и может ругнуться триггер не самой таблицы а дочерней например, как гарантированно запрать текст ошибки и не получать этот "An error occurred while updating the entries. See the inner exception for details."?
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759204
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichУчитывая, что вставки могут быть каскадными и может ругнуться триггер не самой таблицы а дочернейвы думаете вложенность будет увеличиваться?
Думаю нет, т.к. я сам разворачиваю максимум второй уровень)).
Проверьте.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759205
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichВеб интерфейс к <Д, MVC 5, EF при вставке в табличку, получаю из триггера (T-SQL) ошибку (там reiaserror с внятным текстом в сообщении, типа "нельзя записать значение - потому что....")



Да пусть уж триггер возвращает сразу HTML там или картинку с оформленным сообщением об ошибке и кнопки с логикой, чего мелочиться )))
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759211
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все очень просто..валидацию делать на уровне приложения субд лишь хранилище
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759212
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuвсе очень просто..валидацию делать на уровне приложения субд лишь хранилище ну, триггер он переборщил, а ошибку по FK, data not found вполне Могут быть.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759220
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichкак гарантированно запрать текст ошибки и не получать этот "An error occurred while updating the entries. See the inner exception for details."?
очень просто, спускаться вниз пока существуют inner exception, и забрать текст последней
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759244
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123handmadeFromRuвсе очень просто..валидацию делать на уровне приложения субд лишь хранилище ну, триггер он переборщил, а ошибку по FK, data not found вполне Могут быть.

максимально ток по коду, и то очень и очень спорно, но уж точно не текст ошибки из БД,
это конкретный зашквар и стыдобище.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759249
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Согласен. В веб проектах особенно.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759274
denis_viktorovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttPetro123пропущено...
ну, триггер он переборщил, а ошибку по FK, data not found вполне Могут быть.

максимально ток по коду, и то очень и очень спорно, но уж точно не текст ошибки из БД,
это конкретный зашквар и стыдобище.

Покупная система, много логики в триггерах, каскадные апдейты на другие таблицы. Часть можно дорабатывать, часть нет. Родной клиент - нельзя, и он выдает именно эти ошибки, которые ему возвращают из Raiserror.
Иногда с ней надо общаться посредством вэб приложения, валидизировать в нем - это переписать все эти триггера уже в Linq и поддерживать их идентичность.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759279
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovich,
Кому счас легко?
Зачем вам ОРМ, если старая система?
С чего взяли что каскад что то заворачивает во вложенность?
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759281
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichПокупная система,вечный вопрос, как поддерживать зооппарк систем.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759286
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichДень добрый!
Веб интерфейс к <Д, MVC 5, EF при вставке в табличку, получаю из триггера (T-SQL) ошибку (там reiaserror с внятным текстом в сообщении, типа "нельзя записать значение - потому что...."). В Exception вижу "An error occurred while updating the entries. See the inner exception for details." При отладке в exc.InnerException я вижу то же самое сообщение, а вот в нем еще один InnerException и там в message то самое сообщение, что мне нужно. Учитывая, что вставки могут быть каскадными и может ругнуться триггер не самой таблицы а дочерней например, как гарантированно запрать текст ошибки и не получать этот "An error occurred while updating the entries. See the inner exception for details."?
А что Вы с этим текстом делать-то собрались? Пользователю показывать?
А пользователь с ним что будет делать? Срин снимать и в поддержку отсылать? А поддержка пинать разработчиков?

Пишите исключения в лог и будет вам счастье.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759323
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichПокупная система, много логики в триггерах, каскадные апдейты на другие таблицы. Часть можно дорабатывать, часть нет. Родной клиент - нельзя, и он выдает именно эти ошибки, которые ему возвращают из Raiserror.
Иногда с ней надо общаться посредством вэб приложения, валидизировать в нем - это переписать все эти триггера уже в Linq и поддерживать их идентичность.

Да понятно всё это.. легаси, овноход, ракитехтура...
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759339
denis_viktorovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА что Вы с этим текстом делать-то собрались? Пользователю показывать?
А пользователь с ним что будет делать? Срин снимать и в поддержку отсылать? А поддержка пинать разработчиков?

Пишите исключения в лог и будет вам счастье.
В общем да - если оно непонятно ему самому (они бывают вполне понятны) то да скрин - сервисдеск, и хотелось бы, чтобы этот скрин мне самому чтото дал, а не пришлось бы звонить, повторять действия на тестовой, ловить профилером и т.д. и т.п.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759347
denis_viktorovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123denis_viktorovich,
Зачем вам ОРМ, если старая система?
С чего взяли что каскад что то заворачивает во вложенность?

1. Хороший вопрос. Наверное вот в таких случаях (триггера, каскадные апдейты) проще записывать данные хранимкой, привычно возвращать ошибку и только там где этого нет, можно применять ОРМ, но все проверки делать не в базе, а в EF.

2. В отладчике увидел иннерэсепшн, в нем еще один и только там ошибка из триггера.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759348
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovich,
1. Почему вы каскад употребляете в одно ряду с триггером?
ОРМ работает с каскадом штатно. Либо сам, либо говорит о каскаде базе.
А триггер это не для ОРМ.
2. Где скрин ошибки?
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759349
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovich,
Кстати что за каскадный апдейт? Первичного ключа?
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759391
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichВ общем да - если оно непонятно ему самому (они бывают вполне понятны) то да скрин - сервисдеск, и хотелось бы, чтобы этот скрин мне самому чтото дал, а не пришлось бы звонить, повторять действия на тестовой, ловить профилером и т.д. и т.п.

Может быть:

1. делать проверки до выполнения действия? не во время выполнения действия, а до.
-- если логика проверки (так случилось) находится в БД, то почему бы не вызывать функцию, возвращающую результат в табличном виде, с текстами ошибок, а затем уже выполнять действие
2. валидация в ПО максимально где это возможно
3. ошибки писать в лог, максимально подробно, ещё всю операцию сопровождать трассировочным идентификатором, и/или вложенные контексты в журнале
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759417
denis_viktorovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123denis_viktorovich,
Кстати что за каскадный апдейт? Первичного ключа?
Нет, когда в триггере Before или Instead кроме проверок выполняется апдейт связанных таблиц (простановка параметров, неких счетчиков и т.д.). И этот апдейт тоже вызывает цепочку проверок, которая может закончится ошибкой.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759421
denis_viktorovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttdenis_viktorovichВ общем да - если оно непонятно ему самому (они бывают вполне понятны) то да скрин - сервисдеск, и хотелось бы, чтобы этот скрин мне самому чтото дал, а не пришлось бы звонить, повторять действия на тестовой, ловить профилером и т.д. и т.п.

Может быть:

1. делать проверки до выполнения действия? не во время выполнения действия, а до.
-- если логика проверки (так случилось) находится в БД, то почему бы не вызывать функцию, возвращающую результат в табличном виде, с текстами ошибок, а затем уже выполнять действие
2. валидация в ПО максимально где это возможно
3. ошибки писать в лог, максимально подробно, ещё всю операцию сопровождать трассировочным идентификатором, и/или вложенные контексты в журнале

В данном случае сделал проверку до вставки (тут это было просто), там, где непросто наверное буду юзать хранимки.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39759438
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichPetro123denis_viktorovich,
Кстати что за каскадный апдейт? Первичного ключа?
Нет, когда в триггере Before или Instead кроме проверок выполняется апдейт связанных таблиц (простановка параметров, неких счетчиков и т.д.). И этот апдейт тоже вызывает цепочку проверок, которая может закончится ошибкой.тогда весь твой топик в топку.
БД и EF не будет в цикле заворачивать такие ошибки во вложенные.
Закрывай топик.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39772058
Туман войны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovich,

Перебрать InnerException-ы и найти самый последний, от туда взять текст ошибки

вот так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
        
        public static string GetExceptionMessage(this Exception ex)
        {
            if (ex.InnerException == null)
                return ex.Message;
            GetExceptionMessage(ex.InnerException);
        }
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39772092
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Туман войны,
Интересный вопрос был в том, что глубина не больше 2х для рекурсии.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39772113
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггеры вообще в топку. Максимум для чего - это логгирование/аудит.
...
Рейтинг: 0 / 0
EF, вытащить текст ошибки (из триггера)
    #39772135
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Не забудь, что мы на форуме sql_ru. А это триггеры)))
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / EF, вытащить текст ошибки (из триггера)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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