是否有一种优雅的方式使用Dapper将对象或对象集合作为表值参数传递?

时间:2019-05-02 14:25:18

标签: c# .net dapper dapper-extensions

我只是和Dapper沾沾自喜,并喜欢它的简单性。我喜欢我可以轻松地将SELECT过程的结果映射到一个类,这对于使用EF进行简单的ADO和使用EF会造成过大的痛苦是很痛苦的。

现在,我正在尝试找出另一种最佳方法-采取相同类的实例,然后将其传递回存储过程以执行UPDATE或INSERT。

我知道Dapper支持表值参数,这很好,但是我看到的所有信息都建议我首先必须构造一个DataTable或SqlDataRecord集合。创建一个可以完成此任务的帮助程序类很容易,但是对我来说却很笨拙。更好的方法?

1 个答案:

答案 0 :(得分:1)

现在:不,不是真的。但是,我有兴趣研究我们是否可以通过识别值元组数组之类的东西来做某事,从而使它起作用:

var args = new {
    id = 1, name = "abc",
    someTVP = new[] {
        (1, "abc", 42),
        (6, "def", 84),
    });
... use args with dapper

(请注意,这将严格定位-接收方看不到呼叫站点中的任何名称,这是值元组的基本限制)

但是:需要强调的是,不:今天不存在。最好的选择是DataTable