2013-02-11 2 views
4

У меня есть строка с 4 столбцами данных. Я хочу создать объект A из данных в столбцах 1-2. Если данных нет в столбцах 1-2, используйте столбцы 3-4 для создания объекта B. В редких случаях у нас будут данные во всех столбцах, но данные в столбцах 2 и 4 не совпадают. В этом случае я хочу вернуть объект A и объект B.Как создать 1 или 2 объекта в строке с dapper?

Есть ли способ сделать это в dapper, используя мульти-картографирование? Или я должен вернуть объект C, который содержит все 4 столбца, а затем отправить обработку данных для создания объектов 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). Поэтому я не уверен, как действовать дальше.

ответ

3

Если данные разделены на Id, то они должны работать, если вы используете тип оболочки для представления двух значений. Например, если мы используем Tuple<,>, то:

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