现在(n Dapper 1.26及更高版本)直接支持将表值参数烘焙到Dapper中.对于存储过程,由于数据类型内置于存储过程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")
}, ...);
告诉数据表本身要使用哪种自定义数据类型:
someTable.SetTypeName("mytype");
var data = connection.Query<SomeType>(..., new {
id=123, name="abc", values = someTable
}, ...);
任何一个都可以.