Dapper.NET 简单的多表映射
示例
假设我们有一个查询,查询剩余的需要填充Person类的骑兵。
public class Person
{
public string Name { get; set; }
public int Born { get; set; }
public Country Residience { get; set; }
}
public class Country
{
public string Residence { get; set; }
}我们可以使用重载(使用可以用来组成返回的实例)的重载Query<>,用Country的实例填充person类以及Residence属性Func<>。在Func<>可能需要长达7种输入类型与最终的一般的参数始终是返回类型。
var sql = @"SELECT 'Daniel Dennett' AS Name, 1942 AS Born, 'United States of America' AS Residence
UNION ALL SELECT 'Sam Harris' AS Name, 1967 AS Born, 'United States of America' AS Residence
UNION ALL SELECT 'Richard Dawkins' AS Name, 1941 AS Born, 'United Kingdom' AS Residence";
var result = connection.Query<Person, Country, Person>(sql, (person, country) => {
if(country == null)
{
country = new Country { Residence = "" };
}
person.Residience= country;
return person;
},
splitOn: "Residence");注意使用splitOn:"Residence"参数,该参数是要填充的下一个类类型的第一列(在本例中为Country)。Dapper会自动寻找一个称为Id的列进行拆分,但是如果找不到并splitOn没有提供,System.ArgumentException则会抛出一条有用的消息。因此,尽管它是可选的,但通常必须提供一个splitOn值。
热门推荐
10 阿姨添孙子祝福语简短
11 给军属的祝福语简短
12 对女人退休祝福语简短
13 学生 牛年祝福语大全简短
14 烟草客户新年祝福语简短
15 订亲求婚文案祝福语简短
16 名人写信结尾祝福语简短
17 告别祝福语长篇简短
18 感恩相片祝福语简短