我有一个代码结构如下:
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");
多重映射器可以返回任何类型,甚至只是未映射到任何数据库表的聚合类型。
如果打算拆分未称为
splitOn
或id
的任何内容,则提供Id
参数很重要。