I use SQL Server 2012 and Entity Framework6.
I created table valued parameter:
CREATE TYPE IdArray AS TABLE
(
Id int
);
And here my stored procedure:
ALTER PROCEDURE [dbo].[SP_TEST_TLP]
@List dbo.IdArray READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM Clients
WHERE Clients.Id IN ( '@List' )
END
From Visual Studio I call stored procedure and passing paramaters to stored procedure.
I do it this way:
Create DataTable:
var myDataTable = new DataTable();
myDataTable.Columns.Add("Id", typeof(int));
myDataTable.Rows.Add(1);
myDataTable.Rows.Add(3);
myDataTable.Rows.Add(6);
Creating `SqlParameter` from DataTable:
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@List";
parameter.SqlDbType = System.Data.SqlDbType.Structured;
parameter.TypeName = "dbo.IdArray";
parameter.Value = myDataTable;
Fire stored procedure and passing parameter:
var data = _context.Database.ExecuteSqlCommand("SP_TEST_TLP @List", parameter);
The problem is that `ExecuteSqlCommand` returns
-1.
Why `ExecuteSqlCommand` returns
-1 while I expect rows from database?
What I have tried:
I tryed the above but it didn't work!