EntityFramework Procédure ou fonction '' paramètre attendu '', non fournie

c# entity-framework sql

Question

Je m'excuse de poser une question élémentaire, mais je ne trouve pas la cause de cette erreur.

J'utilise Entity Framework pour exécuter une procédure stockée et je passe quatre paramètres, mais la base de données SQL semble les rejeter. Est-ce que quelqu'un peut-il me montrer la bonne direction?

Mon code:

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));

Ce qui produit l'erreur:

La procédure ou la fonction 'SearchDirectoryEntries' attend le paramètre '@DirectoryId', qui n'a pas été fourni.

Le SQL généré est:

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

Les procédures stockées sont:

ALTER PROCEDURE [dbo].[SearchDirectoryEntries]
@DirectoryId int,
@Latitude decimal(18, 6),
@Longitude decimal(18, 6),
@Range int

Merci beaucoup.

Réponse acceptée

Le paramètre commandText de votre requête est incorrect. Il devrait s'agir d'un appel à une procédure stockée avec des paramètres plutôt que juste le nom de la procédure stockée

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));

N'oubliez pas non plus de supprimer '@' du constructeur SqlParameter.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow