2014-12-04 73 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();