Dapper - 문자열 쿼리를 사용하는 테이블 반환 매개 변수

dapper

문제

테이블 쿼리 매개 변수를 문자열 쿼리와 함께 사용해야합니다.

다음 코드가 있습니다.

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

변수 valueList가 List입니다.

실행 결과에 오류가 발생했습니다 : "저장 프로 시저를 찾을 수 없습니다"

사용 절차없이 테이블에 값을 매길 수 있습니까?

고마워요.

수락 된 답변

전체 코드 샘플을 보지 않고는 문제가 무엇인지 알기가 어렵습니다. 완벽하게 잘 실행되는 이것을 고려하십시오.

첫째, TVP 정의

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

그런 다음 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")})));
            }
        }
    }
}


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.