Dapper是否支持SQL 2008表值參數?

.net dapper

有誰知道是否可以使用Dapper將表值參數數據傳遞給存儲過程?

一般承認的答案

現在(n Dapper 1.26和更高版本)直接支持烘焙到精巧的表值參數。對於存儲過程,由於數據類型內置於sproc API中,因此您需要做的就是提供DataTable

var data = connection.Query<SomeType>(..., new {
    id=123, name="abc", values = someTable
}, ...);

對於直接命令文本,您還有兩個選項:

  • 使用輔助方法告訴它自定義數據類型:

    var data = connection.Query<SomeType>(..., new {
        id=123, name="abc", values = someTable.AsTableValuedParameter("mytype")
    }, ...);
    
  • 告訴data-table本身要使用的自定義數據類型:

    someTable.SetTypeName("mytype");
    var data = connection.Query<SomeType>(..., new {
        id=123, name="abc", values = someTable
    }, ...);        
    

任何這些應該工作正常。


專家解答

今天不是。我們實際上為我們厚顏無恥的“in”實現( where col in @values )調查了table-valed-parameters,但是對性能非常where col in @values 。然而,在SPROC的背景下,它是有道理的。

您最好的辦法是將此項記錄為項目網站上的問題,以便我們跟踪/確定其優先級。聽起來有點可行,可能類似於DbString或DynamicParameters選項。

但今天?沒有。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因