Tôi muốn sử dụng Dapper trong trường hợp thực hiện một thủ tục được lưu trữ sẽ trả về 50 lần chọn riêng biệt, không có bộ kết quả riêng lẻ nào rất rộng, có thể là 20 hoặc 30 cột. Mã dưới đây là từ các xét nghiệm Dapper và tôi tự hỏi nếu ví dụ này là một nguyên mẫu tốt để sử dụng.Cách ánh xạ nhiều bản ghi từ một SP duy nhất với Dapper-dot-net
Cảm ơn bạn, Stephen
public void TestMultiMap()
{
var createSql = @"
create table #Users (Id int, Name varchar(20))
create table #Posts (Id int, OwnerId int, Content varchar(20))
insert #Users values(99, 'Sam')
insert #Users values(2, 'I am')
insert #Posts values(1, 99, 'Sams Post1')
insert #Posts values(2, 99, 'Sams Post2')
insert #Posts values(3, null, 'no ones post')";
connection.Execute(createSql);
var sql = @"select * from #Posts p
left join #Users u on u.Id = p.OwnerId
Order by p.Id";
var data = connection.Query<Post, User, Post>(sql, (post, user) => { post.Owner = user; return post; }).ToList();
var p = data.First();
p.Content.IsEqualTo("Sams Post1");
p.Id.IsEqualTo(1);
p.Owner.Name.IsEqualTo("Sam");
p.Owner.Id.IsEqualTo(99);
data[2].Owner.IsNull();
connection.Execute("drop table #Users drop table #Posts");
}
EDIT
Đây là một mẫu dựa trên Marcs câu trả lời.
const string sql = @"__sp_GetMISMOLoanInfo";
using (var multi = _connection.QueryMultiple(sql, new { loannum = "3192381" }, commandType: CommandType.StoredProcedure))
{
var address = multi.Read<ADDRESS>().Single();
var amortizationRule = multi.Read<AMORTIZATION_RULE>().Single();
var appraiserLicense = multi.Read<APPRAISER_LICENSE>().Single();
var automatedUnderwriting = multi.Read<AUTOMATED_UNDERWRITING>().Single();
var avm = multi.Read<AVM>().Single();
var borrowerDetail = multi.Read<BORROWER_DETAIL>().Single();
}
SP ở đâu? Đặc biệt, nó có phải là kết quả * rộng * hay nhiều lựa chọn riêng biệt không? Cả hai làm việc với dapper, nhưng cú pháp là khác nhau giữa hai bố trí –
(Tôi biết nó chỉ là một ví dụ, nhưng một biến bảng có thể đã được tốt hơn trong đó, btw) –
Marc, tôi đã chỉnh sửa bài viết để phản ánh câu hỏi của bạn . –