EntityFramework Процедура или функция '' ожидает параметр '', который не был предоставлен
Приносим извинения за задание только основного вопроса, однако я не могу найти причину этой ошибки.
Я использую Entity Framework для выполнения хранимой процедуры, и я передаю четыре параметра, однако база данных SQL, похоже, отвергает их. Может ли кто-нибудь указать мне в правильном направлении?
Мой код:
ObjectResult<SearchDirectoryItem> resultList = container.ExecuteStoreQuery<SearchDirectoryItem>("SearchDirectoryEntries",
new SqlParameter("@DirectoryId", search.DirectoryId),
new SqlParameter("@Latitude", point.Latitude),
new SqlParameter("@Longitude", point.Longitude),
new SqlParameter("@Range", search.RangeMiles));
Что вызывает ошибку:
Процедура или функция 'SearchDirectoryEntries' ожидает параметра '@DirectoryId', который не был предоставлен.
Сгенерированный SQL:
exec sp_executesql N'SearchDirectoryEntries',N'@DirectoryId int,@Latitude decimal(7,5),@Longitude decimal(6,5),@Range int',@DirectoryId=3,@Latitude=53.36993,@Longitude=-2.37013,@Range=10
Сохраненные процедуры:
ALTER PROCEDURE [dbo].[SearchDirectoryEntries]
@DirectoryId int,
@Latitude decimal(18, 6),
@Longitude decimal(18, 6),
@Range int
Большое спасибо.
Ответы
Ответ 1
Параметр commandText в запросе неверен. Это должен быть вызов хранимой процедуры с параметрами, а не только имя хранимой процедуры:
ObjectResult<SearchDirectoryItem> resultList = container.ExecuteStoreQuery<SearchDirectoryItem>(
"Exec SearchDirectoryEntries @DirectoryId, @Latitude, @Longitude, @Range",
new SqlParameter("DirectoryId", search.DirectoryId),
new SqlParameter("Latitude", point.Latitude),
new SqlParameter("Longitude", point.Longitude),
new SqlParameter("Range", search.RangeMiles));
Также не забудьте удалить '@' из конструктора SqlParameter.