我有一个代码结构如下:

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

我该如何编写从数据库中提取所有Person的Dapper查询?

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

最佳答案

如果要选择嵌套对象,则需要使用多重映射器。

这应该工作:

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

多重映射器可以返回任何类型,甚至只是未映射到任何数据库表的聚合类型。

如果打算拆分未称为splitOnid的任何内容,则提供Id参数很重要。

10-08 00:22