Написание привлекательного запроса для вложенных объектов - PullRequest
7 голосов
/ 26 мая 2011

У меня есть структура кода, как показано ниже:

class Person
{
    Name PersonName;
    int Age;
}

class Name
{
    string FirstName { get; set; }
    string LastName { get; set; }
}

Вот мой сохраненный процесс, который заполняет данные из базы данных.

Create Procedure SpGetAllPersons
As
Select FirstName, LastName, Age from Persons

Как мне написать Dapper запрос, который вытягивает всех людей из базы данных?

Пример:

List<Person> Persons = DbConn.Query<Person>("SpGetAllPersons", CommandType.StoredProcedure);

1 Ответ

8 голосов
/ 26 мая 2011

Вам нужно использовать multi mapper, если вы хотите выбрать вложенные объекты.

Это должно работать:

List<Person> persons = DbConn.Query<Name,Person,Person>
  ("SpGetAllPersons",
     (name,person) => {person.Name = name; return person;} 
     commandType: CommandType.StoredProcedure, 
     splitOn: "Age");

Multi-mapper может возвращать любой тип, даже просто агрегатный тип, который не отображается ни в одну таблицу БД

Важно указать параметр splitOn, если вы собираетесь разделить что-либо, что не называется id или Id.

...