У меня есть одна строка, поступающая из базы данных
select "John" Name,
"Male" Gender,
20 Age,
"Rex" PetName,
"Male" PetGender,
5 PetAge
// ... many more ...
Используя Dapper, я хотел бы потянуть эту строку на два объекта:
class Person
{
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
// ... many more ...
}
class Pet
{
public string PetName { get; set; }
public string PetGender { get; set; }
public int PetAge { get; set; }
// ... many more ...
}
Примечание: здесь нет иерархических отношений, я просто пытаюсь сопоставить одну строку базы данных с двумя (или более) объектами.
Как я могу сделать это с помощью dapper?
- Я знаю, что могу это сделать, возвращая динамику и сопоставляя каждый объект вручную, что является болезненным, поскольку в моем сценарии у нас есть большое количество столбцов. Я бы предпочел не делать этого. (И нет, он не может быть перепроектирован, чтобы требовать меньше столбцов.)
Что я пробовал:
- Я просмотрел
QueryMultiple<Person,Pet>
, но предполагает, что я запускаю несколько запросов. В моем реальном сценарии это очень дорогостоящий запрос, и я хотел бы просто запустить его один раз. - Я также просмотрел возвращаемый
Query<Person,Pet,Tuple<Person,Pet>>
, но для этого требуется столбецId
, здесь нет иерархического отношения илиId
s. Я просто хочу взять одну строку и сопоставить ее с несколькими столбцами.