Dapper: legge direttamente l'ennesimo elemento da GridReader

dapper

Domanda

Questo è quello che ho trovato nel blog dapper

var sql = 
@"
select * from Customers where CustomerId = @id
select * from Orders where CustomerId = @id
select * from Returns where CustomerId = @id";

using (var multi = connection.QueryMultiple(sql, new {id=selectedId}))
{
   var customer = multi.Read<Customer>().Single();      
   var returns = multi.Read<Return>().ToList();
   var orders = multi.Read<Order>().ToList();
   ...
} 

Il mio requisito è che voglio leggere direttamente solo "ordini". Posso farlo ?

Risposta accettata

Se non vuoi che gli altri due, puoi chiamare Read senza mai iterare quella sequenza: nessun oggetto sarà materializzato:

var customer = multi.Read<Customer>(); // not consumed
var returns = multi.Read<Return>(); // not consumed
var orders = multi.Read<Order>().ToList();

Risposta popolare

È possibile utilizzare l'estensione di query per leggere singoli, ad es

const string sql = "select * from Orders where CustomerId = @id";
var orders = connection.Query<Order>(sql, new {id = 1}).ToList(); 

Modificare:

Per eseguire la stored procedure:

var orders = connection.Query<Order>("GetOrders", new {id = 1}, commandType: CommandType.StoredProcedure).ToList();


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché