ch1*_*123 3 c# asp.net enterprise-library
public void updateSkills(DataTable candidateSkillSets)
{
string sqlCommand = "Sp_Candidate";
DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);
db.AddInParameter(dbCommand, "candidateSkillSets",DbType.Object, candidateSkillSets);
db.ExecuteNonQuery(dbCommand);
}
Run Code Online (Sandbox Code Playgroud)
我有一个像上面这样的方法,这里我通过添加参数将数据表传递给存储过程."DbType.Object"没有采用数据表类型.我知道在ADO中我们可以使用"SqlDbType.Structured",但对于企业库,它不起作用.我需要用什么呢?
执行命令时出现以下错误
"传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确.参数1("@candidateSkillSets"):数据类型0x62(sql_variant)具有类型特定元数据的无效类型."
Dav*_*iró 11
我必须修改@ eduardo的代码,让我在Enterprise Library中工作:
public int Insert(int id, DTO mnemonics)
{
DatabaseProviderFactory factory = new DatabaseProviderFactory();
Database Db = factory.CreateDefault();
using (var dbCommand = Db.GetStoredProcCommand("spINSERT"))
{
using (var table = new DataTable())
{
table.Columns.Add("Key", typeof(string));
table.Columns.Add("Value", typeof(string));
foreach (KeyValuePair<string, string> item in mnemonics.data)
{
var row = table.NewRow();
row["Key"] = item.Key;
row["Value"] = item.Value;
table.Rows.Add(row);
}
Db.AddInParameter(dbCommand, "id", DbType.int, id);
SqlParameter p = new SqlParameter("MNEMONICS", table);
p.SqlDbType = SqlDbType.Structured;
dbCommand.Parameters.Add(p);
Db.ExecuteNonQuery(dbCommand);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在SQL Server中的类型:
CREATE TYPE [dbo].[StringDict] AS TABLE(
[Key] [varchar](max) NULL,
[Value] [varchar](max) NULL
)
Run Code Online (Sandbox Code Playgroud)
我希望能帮助别人
| 归档时间: |
|
| 查看次数: |
4731 次 |
| 最近记录: |