Dapper 一对多查询 one to many(dapper是什么牌子)

网友投稿 337 2022-06-21


参考文档:Dapper one to many

Table

public class Person

{

public int Id { get; set; }

public string Name { get; set; }

public int Born { get; set; }

public Country Residience { get; set; }

public ICollection Books { get; set; }

}

public class Country

{

public int CountryId { get; set; }

public string CountryName { get; set; }

}

public class Book

{

public int BookId { get; set; }

public string BookName { get; set; }

}

C# Code

pulic List GetPersons(){

var sql = @"SELECT 1 AS Id, 'Daniel Dennett' AS Name, 1942 AS Born, 1 AS CountryId, 'United States of America' AS CountryName, 1 AS BookId, 'Brainstorms' AS BookName

UNION ALL SELECT 1 AS Id, 'Daniel Dennett' AS Name, 1942 AS Born, 1 AS CountryId, 'United States of America' AS CountryName, 2 AS BookId, 'Elbow Room' AS BookName

UNION ALL SELECT 2 AS Id, 'Sam Harris' AS Name, 1967 AS Born, 1 AS CountryId, 'United States of America' AS CountryName, 3 AS BookId, 'The Moral Landscape' AS BookName

UNION ALL SELECT 2 AS Id, 'Sam Harris' AS Name, 1967 AS Born, 1 AS CountryId, 'United States of America' AS CountryName, 4 AS BookId, 'Waking Up: A Guide to Spirituality Without Religion' AS BookName

UNION ALL SELECT 3 AS Id, 'Richard Dawkins' AS Name, 1941 AS Born, 2 AS CountryId, 'United Kingdom' AS CountryName, 5 AS BookId, 'The Magic of Reality: How We Know What`s Really True' AS BookName

UNION ALL SELECT 3 AS Id, 'Richard Dawkins' AS Name, 1941 AS Born, 2 AS CountryId, 'United Kingdom' AS CountryName, 6 AS BookId, 'An Appetite for Wonder: The Making of a Scientist' AS BookName";

var remainingHorsemen = new Dictionary();

connection.Query(sql, (person, country, book) => {

//person

Person personEntity;

//trip

if (!remainingHorsemen.TryGetValue(person.Id, out personEntity))

{

remainingHorsemen.Add(person.Id, personEntity = person);

}

//country

if(personEntity.Residience == null)

{

if (country == null)

{

country = new Country { CountryName = "" };

}

personEntity.Residience = country;

}

//books

if(personEntity.Books == null)

{

personEntity.Books = new List();

}

if (book != null)

{

if (!personEntity.Books.Any(x => x.BookId == book.BookId))

{

personEntity.Books.Add(book);

}

}

return personEntity;

},

splitOn: "CountryId,BookId");

return remainingHorsemen.Value.ToList();


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot整合WEB开发--(三)文件上传(上传文件 springboot)
下一篇:RestTemplate + okhttp 实现远程调用(resttemplate post)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~