2014-12-04 43 views
-1

我读过你关于在小巧玲珑的使用TVP的答案,我也已经实现您的解决方案,但是当我执行的代码,小巧玲珑返回到我一个“未指定错误”消息。我已查看了所有涉及的组件:小巧玲珑的表值参数OLEDB返回未知错误

  1. TVP在SQL Server
  2. 代码数据表结构的背后,是同TVP
  3. 执行存储过程没有错误

这里Dapper的示例代码,我希望它有助于分析我的问题;

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

什么是这里的后台?如果您的oledb提供程序不支持表值参数*,它将不起作用*;如果后端是SQLServer:***为什么你使用OleDB ***? – 2014-12-04 10:30:52

回答

0

您不指出后端在这里。如果后端是SQL Server,坦白地说:使用SqlConnection。如果后端是别的东西,它可能甚至可能不工作。 ADO.NET提供程序一般不需要或不期望支持表值参数。

注意的是,目前你的代码不调用存储过程。至少,不直接。相反:它正在运行一个调用存储过程的文本命令。这是重要的,因为自定义数据类型是存储过程隐含,但必须是文本明确。与OLEDB:没有办法让它明确!所以,你可能发现这个工作,如果后端和供应商都支持台湾居民入境许可证:

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