我用短小精悍(在现实中我使用一个真正的表)这工作样品查询:Dapper可以返回映射对象和其他非映射值吗?
async void Main()
{
var sql = @"SELECT PersonId = 1,
FirstName = 'john',
LastName = 'Lennon'";
using (var conn = new SqlConnection(@"Data Source=....;Initial Catalog=W...."))
{
var person = await conn.QueryAsync<Person>(sql);
person.Dump();
}
}
public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
结果:
所以映射工作正常。但有时我必须返回像另一个值查询:
SELECT PersonId = 1,
FirstName = 'john',
LastName = 'Lennon' ,
cnt=(SELECT COUNT(1) FROM INFORMATION_SCHEMA.COLUMNS) //example
这是完全合法的:
问:
是否有可能返回Person
对象和其他非映射值(与select
相同)
喜欢的东西:
await conn.QueryAsync<Person,int>(sql)
一个真实的例子:
SELECT [AddressId]
,[PersonName]
,[Street]
,[Address_2]
,[House] ,
cnt=(COUNT(1) OVER (PARTITION BY house) )
FROM [WebERP].[dbo].[App_Address]
所以我返回Address
对象与关于同一个表计数和我不想要另一个选择。
MMM ...有道理。所以我可以创建一个名为'PersonCounted'的派生Person类型,它将具有这个额外的道具。 –
当然,只需更改sql代码中的名称“cnt as PersonCount”,它就可以完成这项工作,或者只是PersonCount = whateevr –