我有一个用 C# 写成字符串的查询,我试图在 T-sql 数据库(不是存储过程)上调用它。我必须传入的参数之一是 GUID 列表。我正在尝试为此使用表值参数。鉴于查询的一部分需要动态表名,因此认为存储过程对于调试来说有些笨拙。查询的最后一部分将表上的 ID 连接到我传入的 Guid 列表中。
将参数添加到我的命令中
var ListOfIDs = new DataTable();
ListOfIDs.Columns.Add("ID", typeof (Guid));
selectedIDs.ForEach(x=> ListOfIDs.Rows.Add(x));
cmd.Parameters.Add(new SqlParameter("@ListOfIDs", SqlDbType.Udt)
{
Value = ListOfIDs, UdtTypeName = "ListOfGuids"
});
我的桌子
CREATE TYPE [dbo].[ListOfGuids] AS TABLE(
[ID] [uniqueidentifier] NULL
)
当我运行该行时:
var reader = cmd.ExecuteReader();
我得到错误:
指定类型未在目标服务器上注册。System.Data.DataTable、System.Data、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089。
我一直无法找到我需要做些什么才能使其正常工作。