ile nasıl birden çok kayıt eşleştirilir Tek bir saklı yordamın yürütülmesinin 50 çoklu seçim yapacağı bir durumda Dapper kullanmak istiyorum, tek tek sonuç kümelerinin hiçbiri çok geniş olabilir, belki en fazla 20 veya 30 sütun. Aşağıdaki kod, Dapper Testlerinden alınmıştır ve bu örneğin kullanmanın iyi bir prototip olup olmadığını merak ediyorum. Tek bir SP'den Dapper-dot-net
, teşekkür ederiz Stephenpublic 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");
}
DÜZENLEME İşte
Marcs Yanıta göre bir örnektir.
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 nerede? Özellikle, bir * geniş * sonuç mu, yoksa birden fazla ayrı seçim mi? Her ikisi de dapper ile çalışır, ancak sözdizimi iki düzen arasında farklıdır –
(Ben sadece bir örnek olduğunu biliyorum, ama bir tablo değişkeni daha iyi olabilirdi, btw) –
Marc, Ben senin soruları yansıtmak için yazıyı düzenledim . –