サーチ…


構文

  • public static IEnumerable <T> Query <T>(このIDbConnectionのcnn、文字列sql、オブジェクトparam = null、SqlTransactionトランザクション= null、boolバッファリング= true)
  • public static IEnumerable <dynamic>クエリ(このIDbConnection cnn、文字列sql、オブジェクトparam = null、SqlTransactionトランザクション= null、bool buffered = true)

パラメーター

パラメータ詳細
cnn あなたのデータベース接続は既にオープンしている必要があります。
SQL 実行するコマンド。
パラメータパラメータを抽出するオブジェクト。
トランザクションこのクエリがある場合はそのトランザクションの一部であるトランザクション。
緩衝問合せの結果をバッファリングするかどうか。これは省略可能なパラメータであり、デフォルトはtrueです。 bufferedがtrueの場合、結果はList<T>バッファされ、複数の列挙で安全なIEnumerable<T>として返されます。 bufferedがfalseの場合、sql接続は読み込みが終了するまで開かれたままになり、メモリー内の一度の行を処理できます。複数の列挙により、データベースへの追加の接続が生成されます。バッファリングされた偽のメモリ使用量を削減するための非常に効率的ですが、あなたはレコードだけの非常に小さな断片を維持するならば、それは持って返さかなりのパフォーマンス・オーバーヘッドを熱心に結果セットを実体化に比べて。最後に、多数のバッファリングされていないSQL接続が並行している場合は、接続プールが不要になると、接続が使用可能になるまでブロック要求が発生することを考慮する必要があります。

静的型のクエリ

コンパイル時に既知の型については、 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);

動的型のクエリ

ジェネリック型を省略すると、動的にクエリを実行することもできます。

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

動的パラメータを使用したクエリ

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
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow