为嵌套对象编写Dapper查询

时间:2011-05-26 01:26:06

标签: orm dapper

我有一个代码结构如下:

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);

1 个答案:

答案 0 :(得分:8)

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

这应该有效:

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

多映射器可以返回任何类型,甚至只返回未映射到任何db表的聚合类型。

如果您打算拆分任何未调用splitOnid的内容,请务必提供Id参数。