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