Dapper.NET
Query di base
Ricerca…
Sintassi
- public static IEnumerable <T> Query <T> (questo IDcConnection cnn, stringa sql, oggetto param = null, SqlTransaction transaction = null, bool buffered = true)
- public static IEnumerable <dynamic> Query (questo IDcConnection cnn, stringa sql, oggetto param = null, SqlTransaction transaction = null, bool buffered = true)
Parametri
Parametro | Dettagli |
---|---|
cnn | La tua connessione al database, che deve essere già aperta. |
sql | Comando da eseguire. |
param | Oggetto da cui estrarre i parametri. |
transazione | Transazione di cui questa query fa parte, se esiste. |
tamponata | Indica se bufferizzare o meno i risultati della query. Questo è un parametro facoltativo con il valore predefinito true. Quando il buffer è vero, i risultati vengono memorizzati in un List<T> e quindi restituiti come IEnumerable<T> che è sicuro per l'enumerazione multipla. Quando il buffer è falso, la connessione sql viene mantenuta aperta fino al termine della lettura, consentendo di elaborare una singola riga alla volta in memoria. Più enumerazioni genereranno ulteriori connessioni al database. Mentre buffered false è altamente efficiente per ridurre l'utilizzo della memoria se si mantengono solo frammenti molto piccoli dei record restituiti, ha un overhead delle prestazioni considerevole rispetto alla materializzazione impaziente del set di risultati. Infine, se si dispone di numerose connessioni SQL simultanee non bufferizzate, è necessario considerare l'inattività del pool di connessioni che causa il blocco delle richieste fino a quando le connessioni diventano disponibili. |
Interrogazione per un tipo statico
Per i tipi noti al momento della compilazione, utilizzare un parametro generico con Query<T>
.
public class Dog
{
public int? Age { get; set; }
public Guid Id { get; set; }
public string Name { get; set; }
public float? Weight { get; set; }
public int IgnoredProperty { get { return 1; } }
}
//
IDBConnection db = /* ... */;
var @params = new { age = 3 };
var sql = "SELECT * FROM dbo.Dogs WHERE Age = @age";
IEnumerable<Dog> dogs = db.Query<Dog>(sql, @params);
Interrogazione per i tipi dinamici
Puoi anche eseguire query dinamicamente se non utilizzi il tipo generico.
IDBConnection db = /* ... */;
IEnumerable<dynamic> result = db.Query("SELECT 1 as A, 2 as B");
var first = result.First();
int a = (int)first.A; // 1
int b = (int)first.B; // 2
Query con parametri dinamici
var color = "Black";
var age = 4;
var query = "Select * from Cats where Color = :Color and Age > :Age";
var dynamicParameters = new DynamicParameters();
dynamicParameters.Add("Color", color);
dynamicParameters.Add("Age", age);
using (var connection = new SqlConnection(/* Your Connection String Here */))
{
IEnumerable<dynamic> results = connection.Query(query, dynamicParameters);
}
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow