must declare the scalar variable '@custid' using dbcontext.Database.SqlQuery?
15,119
Solution 1
Since you're using named parameters, you have to specify the matching name for the parameter you're passing.
var results = _MiscContext.Database.SqlQuery<int>(
"exec sp_GetStaff @custid",
new SqlParameter("custid", customerNumber)).ToList<int>();
Solution 2
Try
var results = _MiscContext.Database.SqlQuery<int>(
"exec sp_GetStaff {0}",
customerNumber).ToList();
Author by
James123
Updated on June 14, 2022Comments
-
James123 almost 2 years
I am trying to execute stored procedure from bcontext.Database.SqlQuery using EF5.
It is throwing an error
must declare the scalar variable '@custid'
var results = _MiscContext.Database.SqlQuery<int>( "exec sp_GetStaff @custid", customerNumber).ToList<int>();
SP returns
1
if customerNumber is staff otherwise it returnempty
row.ALTER PROCEDURE [dbo].[sp_GetStaff] @custid varchar(12) AS BEGIN SET NOCOUNT ON; SELECT 1 AS [C1] FROM [dbo].[Staff] with (nolock) WHERE [CUSTOMER_ID] = @custid END
How to manage this?
-
Edward Brey about 8 yearsThis loses the performance and security benefits of a parameterized query.
-
Kinetic about 2 yearsYou are awesome, Microsoft are not, see here where they claim you can simply add the parameters docs.microsoft.com/en-us/ef/core/querying/raw-sql. Also, if you get a weird error when you try the above fix, check the namespaces used. See: stackoverflow.com/questions/22705767/…