【问题标题】:Dapper Table Valued Parameter OleDB returns Unspecified ErrorDapper 表值参数 OleDB 返回未指定错误
【发布时间】:2014-12-04 08:22:43
【问题描述】:

我已阅读您关于在 Dapper 中使用 TVP 的回答,我也实施了您的解决方案,但是当我执行代码时,Dapper 向我返回“未指定错误”消息。我已经审查了所有涉及的组件:

  1. SQL Server 中的 TVP
  2. 后面代码中的数据表结构与TVP相同
  3. 执行存储过程没有错误

这是 Dapper 的示例代码,希望对分析我的问题有所帮助;

return _oledbconn.Query<int>(@"exec tvpdapper_sample ?", new { 
otstatus = _dtTVP.AsTableValuedParameter() 
}).SingleOrDefault();

【问题讨论】:

  • 这里的后端是什么?如果您的 oledb 提供程序不支持表值参数,它将不起作用;如果后端是 SQLServer:你为什么使用 OleDB

标签: c# dapper table-valued-parameters


【解决方案1】:

你没有在这里指出后端是什么。如果后端是 SQL Server,坦率地说:使用SqlConnection。如果后端是其他东西,它可能会也可能不会工作。 ADO.NET 提供程序一般而言不需要也不需要支持表值参数。

请注意,此时您的代码并未调用存储过程。至少,不是直接的。相反:它正在运行一个调用存储过程的文本命令。这很重要,因为自定义数据类型对于存储过程是 implicit,但对于文本必须是 explicit。而对于 OLEDB:没有办法明确表示!所以您可能发现这是可行的,如果您的后端和提供商都支持 TVP:

return _oledbconn.Query<int>(@"tvpdapper_sample", new { 
    otstatus = _dtTVP.AsTableValuedParameter() 
}, commandType: CommandType.StoredProcedure).SingleOrDefault();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2016-08-12
    • 2013-10-26
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多