Orm 为嵌套对象编写简洁的查询

Orm 为嵌套对象编写简洁的查询,orm,dapper,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 如

我的代码结构如下:

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
如何编写从数据库中提取所有人员的简洁查询

例如:


List Persons=DbConn.Query(“SpGetAllPersons”,CommandType.StoredProcedure)

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

这应该起作用:

List<Person> persons = DbConn.Query<Name,Person,Person>
  ("SpGetAllPersons",
     (name,person) => {person.Name = name; return person;} 
     commandType: CommandType.StoredProcedure, 
     splitOn: "Age");
List persons=DbConn.Query
(“SpGetAllPersons”,
(姓名,person)=>{person.name=姓名;返回人;}
commandType:commandType.StoredProcess,
斯普利顿:“年龄”);
多重映射器可以返回任何类型,甚至只是未映射到任何db表的聚合类型


如果要在任何未被称为
id
id
的对象上进行拆分,则必须提供
splitOn
参数

这对我不起作用。我不得不交换姓名的位置:
.Query(…,(person,Name)=>…)
。此外,splitOn:“Age”对我也不起作用-我经常遇到这样的错误:“当使用多重映射API时,如果您有Id以外的密钥,请确保设置splitOn参数”我误解了splitOn的实际操作。。。那部分很好用。。。但我仍然需要交换
Name