0
に参加左:Dapperのmultimappingと、このテストを考える
public class Author
{
public int AuthorId { get; set; }
public List<Book> Books { get; set; } = new List<Book>();
}
public class Book
{
public int BookId { get; set; }
}
[Fact]
public async Task DapperCollapseLeftJoin()
{
var sql = @" select 1 as AuthorId, 1 as BookId
union select 1 as AuthorId, 2 as BookId
union select 2 as AuthorId, 3 as BookId
union select 2 as AuthorId, 4 as BookId";
var authorsWithBooks =
(await AC.OpenConnection.QueryAsync<Author, Book, Author>(sql,
(author, book) => { author.Books.Add(book); return author; },
splitOn: "AuthorId, BookId")).ToList();
// fails because we're getting 4 author+book rows
Assert.Equal(2, authorsWithBooks.Count);
}
Dapperのためのドキュメントは複数のオブジェクトにマップする行をmultimapping、実際に内部/左はどこ参加するためのオブジェクト(のようなことが起こるでしょう崩壊については何も言及していないと言います一番左の列の値が繰り返されます)。
これを実現するためにDapperのネイティブ方法はありますか?