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

时间:2013-02-11 21:27:01

标签: c# sql-server dapper

我有一行包含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列表)。所以我不确定如何继续。

1 个答案:

答案 0 :(得分:3)

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

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