É assim que chamo o procedimento armazenado com parâmetro com valor de tabela. A principal diferença é que eu uso um
DataTable
parâmetro. Lembro-me de ter problemas com ligações de nomes de parâmetros, mas não me lembro exatamente o que eram. Isso explica a mudança que fiz na sintaxe da chamada de procedimento. Eu sei que este deveria estar funcionando.
var dataTable = new DataTable();
dataTable.TableName = "dbo.IntsTTV";
dataTable.Columns.Add("Id", typeof(int));
dataTable.Rows.Add(1); // Id of '1' is valid for the Person table
SqlParameter parameter = new SqlParameter("UserIds", SqlDbType.Structured);
parameter.TypeName = dataTable.TableName;
parameter.Value = dataTable;
var res = _db.Database.SqlQuery<string>("EXEC GetUsers @UserIds", parameter).ToList();