Dapper - Paramètre à valeur de table avec requête de chaîne

dapper

Question

Je dois utiliser le paramètre Table Valued avec une requête de chaîne

J'ai le code suivant

string query = "SELECT * FROM Tabla1 T1 INNER JOIN @listItems T2 ON T2.Id = T1.Id";
var results = sqlConnection.Query(query , new TableValuedParameter<string>("@listItems", "string_list_Type", valuesList));

la variable valueList est une liste

L'exécution me donne une erreur: "Impossible de trouver la procédure stockée"

Est-il possible d'utiliser des paramètres de table usa sans procédure d'utilisation?

merci bien

Réponse acceptée

Sans voir un exemple de code complet, il est difficile de déterminer quel pourrait être le problème. Considérez ceci, qui s'exécute parfaitement bien:

Tout d'abord, la définition de TVP

CREATE TYPE [dbo].[TVPSTRING] AS TABLE(
    [VALUE] NVARCHAR(MAX) NULL
)

Ensuite, échantillonnez le code Dapper:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using Dapper;

namespace CPTVP
{
    class Program
    {
        static void Main(string[] args)
        {
            var dt = new DataTable();
            dt.Columns.Add("StringsStringsEverywhere", typeof(string));
            foreach (int i in Enumerable.Range(0,10))
            {
                dt.Rows.Add(string.Format("{0:0000}", i));
            }

            using (var conn = new SqlConnection("Data Source=.;Initial Catalog=Scratch;Integrated Security=true;"))
            {
                Console.WriteLine(String.Join("\n", conn.Query<string>("SELECT * FROM @tvpstr", new {tvpstr=dt.AsTableValuedParameter("dbo.TVPSTRING")})));
            }
        }
    }
}



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi