【发布时间】:2013-07-19 20:35:49
【问题描述】:
我有一行来自数据库
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 ...
}
注意:这里没有层次关系,我只是试图将一个数据库行映射到两个(或更多)对象。
如何使用 dapper 做到这一点?
- 我知道我可以通过返回动态并手动映射每个对象来做到这一点,这很痛苦,因为在我的场景中我们有大量的列。我宁愿不这样做。 (不,它不能被重新设计为需要更少的列。)
我尝试过的:
- 我查看了
QueryMultiple<Person,Pet>,但它假定我正在运行多个查询。在我的现实生活场景中,这是一个非常昂贵的查询,我只想运行一次。 - 我也考虑过返回
Query<Person,Pet,Tuple<Person,Pet>>,但这需要Id列,这里没有层次关系或Ids。我只想取一行并将其映射到多列。
【问题讨论】: