Dapper.NET
Basisvragen
Zoeken…
Syntaxis
- public static IEnumerable <T> Query <T> (deze IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)
- public static IEnumerable <dynamic> Query (deze IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)
parameters
Parameter | Details |
---|---|
cnn | Uw databaseverbinding, die al open moet zijn. |
sql | Commando om uit te voeren. |
param | Object om parameters uit te halen. |
transactie | Transactie waarvan deze zoekopdracht deel uitmaakt, indien aanwezig. |
gebufferde | Of de resultaten van de query al dan niet moeten worden opgeslagen. Dit is een optionele parameter met de standaardwaarde waar. Wanneer gebufferd waar is, worden de resultaten gebufferd in een List<T> en vervolgens geretourneerd als een IEnumerable<T> die veilig is voor meerdere opsommingen. Wanneer gebufferd onwaar is, wordt de sql-verbinding opengehouden totdat u klaar bent met lezen, zodat u een enkele rij tegelijk in het geheugen kunt verwerken. Meerdere opsommingen zorgen voor extra verbindingen met de database. Hoewel gebufferde false zeer efficiënt is voor het verminderen van geheugengebruik, als u slechts zeer kleine fragmenten van de geretourneerde records bijhoudt, heeft het een aanzienlijke prestatie-overhead in vergelijking met het gretig materialiseren van de resultaatset. Ten slotte, als u meerdere gelijktijdige niet-gebufferde sql-verbindingen heeft, moet u overwegen om de pool van de verbinding te verhinderen waardoor verzoeken worden geblokkeerd totdat verbindingen beschikbaar komen. |
Zoeken naar een statisch type
Voor typen die bekend zijn tijdens het compileren, gebruikt u een generieke parameter met 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);
Query's voor dynamische typen
U kunt ook dynamisch zoeken als u het generieke type weglaat.
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
Zoekopdracht met dynamische parameters
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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow