Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Übergeben eines Arrays von Ints an eine gespeicherte T-SQL-Prozedur über das Entitätsframework

So nenne ich gespeicherte Prozeduren mit Tabellenwertparametern. Der Hauptunterschied besteht darin, dass ich eine DataTable verwende Parameter.

Ich erinnere mich, dass ich Probleme mit Parameternamenbindungen hatte, aber ich erinnere mich nicht genau, was sie waren. Dies erklärt die Änderung, die ich an der Syntax des Prozeduraufrufs vorgenommen habe. Ich weiß, dass dieser funktionieren sollte.

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