最近項目中用到Dapper,其中有個多表是查詢,寫了個測試

public class Book { public int ID; public string Name; public string Description; public BookComment bookComment; public BookPic bookPic; }

public class BookPic { public int ID; public int BookID; public string Name; public string PicDesc; }

public class BookComment { public int ID; public int BookId; public string Name; public string Comment; }
查詢用到splitOn,匹配是從結果列最后往前找,如下找到BookID到最后列映射到C表中,再往前找到Name,再映射到B表中,再前面的列則映射A表中,查找分隔匹配是不區分大小寫的。
如果是跨庫查詢,配置的user需要有open其它庫的權限。
public List<Book> GetBookList() { List<Book> bList = null; try { using (var t = new SqlConnection(ConfigurationManager.ConnectionStrings["Test"].ConnectionString)) { bList= t.Query<Book, BookComment, BookPic, Book>(@"select a.ID,a.Name,a.Description, b.Name,b.ID,b.BookId,b.Comment, c.BookID,c.ID,c.Name,c.PicDesc from [dbo].[Book] a inner join [dbo].[BookComment] b on a.id=b.bookid inner join [dbo].[BookPic] c on a.id =c.bookid", (book, bookcomment, bookpic) => { book.bookComment = bookcomment; book.bookPic = bookpic; return book; }, splitOn: "Name,BookID" ).ToList(); } } catch (Exception ex) { nlog.Error(ex.ToString()); } return bList; }