powered by simpleCommunicator - 2.0.33     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как получить RETURN и поймать RAISERROR (severity <10) хранимки в Entity Framework
3 сообщений из 3, страница 1 из 1
Как получить RETURN и поймать RAISERROR (severity <10) хранимки в Entity Framework
    #39926332
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Я облазил инет. Но не сумел достаточно быстро найти ответ на поставленный вопрос. А точнее два вопроса. Напишу их для удобства ответов:

1. Как получить RETURN из хранимой процедуры? Какие настройки в модели надо сделать?
2. Каким образом из модели EF можно получить сообщение ошибки raiserror у которой уровень ошибки 10 и ниже.

PS: Я начитался вариантов с OUTPUT параметрами, селектами и тд. Смысл вопроса не в том, чтобы в принципе решить задачу хоть каким-то способом (хоть каким-то я умею). А решить ее так, как предусматривает MS SQL, что многие другие фреймворки-таки соблюдают, и не приходится городить отсебятину.

PPS: Ответ "это в принципе в EF не возможно", меня тоже наверное устроит. Ну если не умеет так именно EF (а не программист, который просто не знает как правильно), то и нет смысла дальше париться.

Спасибо :)
...
Рейтинг: 0 / 0
Как получить RETURN и поймать RAISERROR (severity <10) хранимки в Entity Framework
    #39937669
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боролся с этой же проблемой, а именно: пытался заставить EF понять что возвращает SP. И выяснил вот что: при мапировании модели EF получает метаданные о SP, из которых выбирает что-то одно. Т.е. если SP возвращает несколько НД (не говоря о коде возврата, который возвращается всегда), то EF "распознает" только один из SELECTов, которые есть в теле хранимки - по нему и строится модель (класс) и код контекста. Если SELECT отсутствует (SP использует EXEC), то класс не создается, а в контексте соотв. процедура возвращает int (т.е. код возврата). Для нескольких НД в качестве класса берется только один (обычно - последний). Остальные надо вытягивать ручками, используя ObjectQuery.NextResult, что неудобно ибо нет явной привязки к соотв. модели, - опять-таки в дело вступают "ручки".
И это не единственный недостаток EF (о нем, кстати, явно написано в BOL). Попробуйте "штатными" средствами EF поиграться с транзакциями или "поймать" EXCEPTION с SQL-сервера.

Вывод : используйте EF как костяк своей ORM, но при этом всякие штучки типа обработки нескольких НД, исключений на стороне SQL Server, управление транзакциями и т.д. добавляйте в репозиторий, используя, например, SQLClient

Как-то так :)
...
Рейтинг: 0 / 0
Как получить RETURN и поймать RAISERROR (severity <10) хранимки в Entity Framework
    #39937689
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Промешан_,

У EF задача простая. Это ORM и точках.

Поэтому, если вас эти рамки ORM не устраивают, вам лучше посмотреть в сторону микро-орм, чтобы иметь возможность получать типизированные результаты запросов. Но и иметь полную свободу при работе с БД.

Но не забывайте, что за всё нужно платить :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как получить RETURN и поймать RAISERROR (severity <10) хранимки в Entity Framework
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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