수색…
통사론
- public static IEnumerable <T> Query <T> (이 IDbConnection cnn, 문자열 sql, 개체 param = null, SqlTransaction 트랜잭션 = null, 부울 buffered = true)
- public static IEnumerable <dynamic> 쿼리 (this IDbConnection cnn, 문자열 sql, 개체 param = null, SqlTransaction 트랜잭션 = null, bool buffered = true)
매개 변수
매개 변수 | 세부 |
---|---|
CNN | 데이터베이스 연결이 이미 열려 있어야합니다. |
SQL | 실행할 명령. |
매개 변수 | 매개 변수를 추출 할 객체입니다. |
트랜잭션 | 이 쿼리가있을 경우 트랜잭션의 일부입니다. |
완충 된 | 쿼리의 결과를 버퍼링할지 여부. 이 매개 변수는 선택적 매개 변수이며 기본값은 true입니다. buffered가 true 일 때 결과는 List<T> 버퍼링 된 다음 여러 열거 형에 안전한 IEnumerable<T> 로 반환됩니다. buffered가 false이면 sql 연결은 읽기가 끝날 때까지 열려있어 메모리에서 한 번에 한 행을 처리 할 수 있습니다. 여러 열거 형은 데이터베이스에 대한 추가 연결을 생성합니다. 버퍼가있는 false는 반환되는 레코드의 아주 작은 조각 만 유지하는 경우 메모리 사용을 줄이는 데 매우 효율적이지만 결과 집합을 열심히 구현하는 것과 비교할 때 상당한 성능 오버 헤드 가 있습니다. 마지막으로 수많은 버퍼링되지 않은 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