如何使用dapper每行创建1或2个对象

本文关键字:2个 对象 创建 何使用 dapper | 更新日期: 2023-09-27 17:58:47

我有一行有4列数据。我想从第1-2列中的数据创建一个对象A。如果数据不在第1-2列中,请使用第3-4列创建对象B。在极少数情况下,我们会在所有列中都有数据,但第2列和第4列中的数据不匹配。在这种情况下,我想返回一个对象A和一个对象B。

有没有一种方法可以在dapper中使用多重映射来实现这一点?或者我应该返回一个全部为4列的对象C,然后对数据进行后处理以创建我真正想要的对象A和对象B吗?

public class A {
  public long ID {get;set;}
  public long Value {get;set;}
}
public class B {
  public long ID {get;set;}
  public long Value {get;set;}
}

对象A和B彼此不相关(即,A不包含B的列表)。所以我不确定该怎么办。

如何使用dapper每行创建1或2个对象

如果数据是由Id分区的,那么如果使用包装器类型来表示这两个值,那么它应该已经工作了。例如,如果我们使用Tuple<,>,那么:

var data = conn.Query<A, B, Tuple<A, B>>(sql,(a, b) => Tuple.Create(a, b), args);