简体   繁体   English

企业库中用户定义的SQL类型等效

[英]User defined SQL type equivalent in Enterprise library

I'm trying to pass parameter which is a table type in SQL Server. 我试图传递参数,这是SQL Server中的表类型。 I'm unable to find compatible c# type. 我找不到兼容的C#类型。

I'm passing multiple parameters to stored procedure and one of the parameter is user defined type in SQL. 我将多个参数传递给存储过程,并且参数之一是SQL中的用户定义类型。

Database Connection = new SqlDatabase(ConnectionString);
DbCommand Cmd= Connection.GetStoredProcCommand("ProcedureName");
..................
Connection.AddInParameter(Cmd, "@custom", DbType.Object, custom);

Stored procedure looks like this: 存储过程如下所示:

ALTER PROCEDURE [dbo].[ProcedureName]
  @custom dbo.CstmType READONLY 
AS

This code is throwing following error : 此代码抛出以下错误:

The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。 Parameter 6 ("@custom"): Data type 0x62 (sql_variant) has an invalid type for type-specific metadata 参数6(“ @custom”):数据类型0x62(sql_variant)的类型特定于元数据的类型无效

I'm tired on finding an answer to this question on internet. 我很累在互联网上找到这个问题的答案。 Can somebody please provide fruitful suggestion how to get ride of this error and what should be the appropriate datatype? 有人可以提供有益的建议如何解决这个错误,什么是合适的数据类型?

In your C# code, create DataTable with same fields you have added in your user define table type. 在C#代码中,使用您在用户定义表类型中添加的相同字段创建DataTable。 Such as, 如,

DataTable dt = new DataTable();
dt.Columns.Add("column1");
dt.Columns.Add("column2");

After that, insert data in this table,like, 之后,将数据插入此表,例如,

dt.Rows.Add(new Object[]{ value1,value2 });

Add parameter in procedure call like below, 在过程调用中添加参数,如下所示,

SqlCommand cmd = new SqlCommand("ProcedureName", con)
cmd.CommandType = CommandType.StoredProcedure;
var List = new SqlParameter("@custom", SqlDbType.Structured);
List.TypeName = "CstmType";
List.Value = dt;
cmd.Parameters.Add(List);

In your stored procedure, add parameters for user defined table type 在您的存储过程中,为用户定义的表类型添加参数

@custom dbo.CstmType READONLY

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM