Comment passer un tableau de valeur de paramètre

Je suis en train de passer un tableau de valeur de paramètre à une procédure stockée, mais je reçois une exception (voir ci-dessous).

SqlCommand c = new SqlCommand("getPermittedUsers", myConn) { CommandType = CommandType.StoredProcedure };

c.Parameters.AddWithValue("@intNotifyingUserId", notifyingUserId);
c.Parameters.AddWithValue("@tSelectedPdfIds", sharedPdfs).SqlDbType = SqlDbType.Structured;

SqlDataReader dr = c.ExecuteReader();

Le type est défini sur le serveur comme ceci:

CREATE TYPE [dbo].[IdList] AS TABLE(
    [Id] [int] NOT NULL
)

J'ai essayé en passant sharedPdfs comme un List<int>, et IQueryable<int>, mais l'exception suivante:

Object must implement IConvertible.

Quelqu'un sait ce que je fais de mal? La documentation suppose que je devrais être en mesure de passer à une liste comme une TVP, mais ne donne pas d'exemples.

Merci.

  • Comment est getPermittedUsers déclaré?
  • C'est un long shot, mais avez-vous essayé de passer un int[]?
  • Vous avez besoin d'utiliser DataTable.
  • Merci, il a travaillé avec un DataTable. Ennuyeux d'avoir à convertir mon IQueryable dans un DataTable, cependant.
  • Vous pouvez également mettre en place IEnumerable<SqlDataRecord>. lennilobel.wordpress.com/2009/07/29/...
InformationsquelleAutor nw. | 2011-08-08