我有一行来自数据库
select "John" Name,
"Male" Gender,
20 Age,
"Rex" PetName,
"Male" PetGender,
5 PetAge
// ... many more ...
使用Dapper,我想将这一行拉成两个对象:
class Person
{
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
// ... many more ...
}
class Pet
{
public string PetName { get; set; }
public string PetGender { get; set; }
public int PetAge { get; set; }
// ... many more ...
}
注意:这里没有层次关系,我只是想将一个数据库行映射到两个(或更多)对象。
如何使用小巧玲珑来做到这一点?
我尝试了什么:
QueryMultiple<Person,Pet>
,但它假设我正在运行多个查询。在我的现实场景中,这是一个非常昂贵的查询,我想只运行一次。 Query<Person,Pet,Tuple<Person,Pet>>
,但这需要一个Id
列,这里没有hierearchical关系或Id
s。我只想采取一行并将其映射到多个列。 答案 0 :(得分:17)
您使用Query
方法非常接近解决方案。如果您没有Id
列,则可以提供splitOn
参数:
connection.Query<Person, Pet, Tuple<Person, Pet>>(sql,
(person, pet) => Tuple.Create(person, pet), splitOn: "PetName");