小巧玲珑的表值参数OLEDB返回未知错误
问题描述:
我读过你关于在小巧玲珑的使用TVP的答案,我也已经实现您的解决方案,但是当我执行的代码,小巧玲珑返回到我一个“未指定错误”消息。我已查看了所有涉及的组件:小巧玲珑的表值参数OLEDB返回未知错误
- TVP在SQL Server
- 代码数据表结构的背后,是同TVP
- 执行存储过程没有错误
这里Dapper的示例代码,我希望它有助于分析我的问题;
return _oledbconn.Query<int>(@"exec tvpdapper_sample ?", new {
otstatus = _dtTVP.AsTableValuedParameter()
}).SingleOrDefault();
答
您不指出后端在这里。如果后端是SQL Server,坦白地说:使用SqlConnection
。如果后端是别的东西,它可能甚至可能不工作。 ADO.NET提供程序一般不需要或不期望支持表值参数。
注意的是,目前你的代码不调用存储过程。至少,不直接。相反:它正在运行一个调用存储过程的文本命令。这是重要的,因为自定义数据类型是存储过程隐含,但必须是文本明确。与OLEDB:没有办法让它明确!所以,你可能发现这个工作,如果您后端和供应商都支持*居民入境许可证:
return _oledbconn.Query<int>(@"tvpdapper_sample", new {
otstatus = _dtTVP.AsTableValuedParameter()
}, commandType: CommandType.StoredProcedure).SingleOrDefault();
什么是这里的后台?如果您的oledb提供程序不支持表值参数*,它将不起作用*;如果后端是SQLServer:***为什么你使用OleDB ***? – 2014-12-04 10:30:52