2017-02-03 7 views
1

Я думаю, что Entity Framework не имеет хорошей поддержки хранимой процедуры. Я хотел бы иметь лучший хранитель процедур.Есть ли способ сопоставления хранимой процедуры с SQL Server в C# без Entity Framework?

Проблема заключается в том, что у моей хранимой процедуры есть инструкция IF. Внутри IF я делаю SELECT. Когда мой код не попадает внутрь IF, хранимая процедура не выбирает данные. Когда я не выбираю данные, сгенерированный код Entity Framework сработает.

+1

Entity Framework имеет хорошую поддержку хранимой процедуры. Что вы пытаетесь отобразить? Кратко. – Rangesh

+0

В моей хранимой процедуре есть оператор IF. Внутри IF я делаю SELECT. Когда мой код не попадает внутрь IF, хранимый proc не выбирает данные. Когда я не выбираю данные, сгенерированный сгенерированный код фрейма сущностей. –

ответ

3

Проблема заключается в том, что у моей хранимой процедуры есть инструкция IF. Внутри IF я делаю SELECT. Когда мой код не попадает внутрь IF, хранимый proc не выбирает данные. Когда я не выбираю данные, сгенерированный сгенерированный код фрейма сущностей.

EF вылетает из-за того, что ожидает набор результатов типа x (независимо от вашего типа), но он ничего не получает, если ваша хранимая процедура не проходит ваше условие if. Способ решить это легко: верните пустой набор результатов, который имеет то же количество столбцов из хранимой процедуры, когда условие не проходит. Каждая ветка вашей хранимой процедуры должна возвращать тот же набор результатов или возвращать ошибку, но тогда вам необходимо обработать ошибку на стороне вашего приложения.

+0

Вы очень добры к EF. В коде мы можем надеяться, что метод, возвращающий коллекцию, возвращает [пустую коллекцию] (http://stackoverflow.com/questions/1969993/is-it-better-to-return-null-or-empt-collection) скорее чем null. Но мы, вероятно, не должны рассчитывать на это. – bbsimonbb