Подтвердить что ты не робот

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

Большое спасибо.

4b9b3361

Ответ 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.