Хранимая процедура видна в браузере модели EF6, но не может вызвать ее из кода - PullRequest
0 голосов
/ 13 мая 2018

Я добавил хранимую процедуру в базу данных SQL Server и обновил модель EF6. Я вижу хранимую процедуру в разделе «Импорт функций» браузера модели, но не могу получить к ней доступ в коде для ее вызова.

У нас есть еще одна хранимая процедура, импортированная в модель, и мы вызываем ее следующим образом.

((MyEntities)ctx).SupportTicketsSearch(searchText)

Однако Intellisense не показывает новую хранимую процедуру, когда я пытаюсь сделать то же самое, и если я набираю имя вручную, я получаю ошибку компилятора. Единственное различие, которое я вижу между ними, состоит в том, что другой возвращает строки, а этот нет.

Если я посмотрю в сгенерированном файле контекста .cs, я увижу другую хранимую процедуру в разделе #region Function Imports, но ее там нет.

Я попытался удалить его как из хранимых процедур, так и из импорта функций, а затем повторно импортировать его, но произошло то же самое - оно появилось в обоих местах в браузере модели, но я не могу получить к нему доступ из кода.

Обратите внимание, что это не похоже на проблему с разрешениями, так как EF импортирует хранимую процедуру и показывает ее в браузере модели. Однако, чтобы перепроверить, я попытался предоставить разрешение на выполнение public в SQL Server и обновить модель, но это не имело никакого значения.

У кого-нибудь есть идеи, почему хранимая процедура отображается в браузере модели, но не отображается в коде?

1 Ответ

0 голосов
/ 15 мая 2018

Убедитесь, что хранимая процедура возвращает значение, чтобы структура сущностей могла создать импортированную функцию без каких-либо проблем, и вы можете увидеть эту функцию в вашем dbcontext.

Другой подход - вызвать вас как SP следующим образом:

dbContext.Database.ExecuteSqlCommand("sp_Delete @ID", new SqlParameter("@ID", value));

База данных свойство доступно в вашем dbcontext с пространством имен systema.data.entity в entityframework 6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...