【问题标题】:Is there a elegant way to pass object or object collection as table-valued-parameter using Dapper?有没有一种优雅的方法可以使用 Dapper 将对象或对象集合作为表值参数传递?
【发布时间】:2019-05-02 14:25:17
【问题描述】:

我只是在使用 Dapper 并喜欢它的简单性。我喜欢我可以轻松地将 SELECT 过程的结果映射到一个类,这在直接 ADO 中做起来很痛苦,而使用 EF 则过大了。

现在我正在尝试找出最好的另一种方式 - 获取同一类的实例并将其传递回存储过程以执行更新或插入。

我知道 Dapper 支持表值参数,这很好,但我看到的一切都表明我首先必须构造一个 DataTable 或 SqlDataRecord 集合。创建一个可以完成此任务的辅助类很容易,但对我来说感觉很笨拙。更好的方法?

【问题讨论】:

    标签: c# .net dapper


    【解决方案1】:

    现在:不,不是。但是,我有兴趣调查我们是否可以通过识别值元组数组之类的东西来做某事,这样就可以了:

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

    (请注意,这将是严格定位的——调用站点中的任何名称对接收者都是不可见的,这是值元组的基本限制)

    但是:强调一下,不:这在今天不存在。你最好的选择是DataTable

    【讨论】:

    • 感谢您的快速响应,Marc,并开始构建它。
    猜你喜欢
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 2014-08-04
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多