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

Mar*_*tin 5 c# sql-server dapper

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

有没有一种方法可以在dapper中使用多重映射?还是应该返回一个全为4列的对象C,然后对数据进行后期处理以创建对象A和BI真正想要的对象?

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;}
}
Run Code Online (Sandbox Code Playgroud)

对象A和B彼此不相关(即A不包含B的列表)。因此,我不确定如何进行。

Mar*_*ell 4

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

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