728x90
728x90
Dapper
- .NET에서 사용할 수 있는 객체 관계 매핑(ORM) 라이브러리
- SQL 쿼리 및 프로시저 등을 실행할 수 있음
- 결과를 객체에 매핑할 수 있음
- SQL Injection 방지 기능 포함
스칼라 값 쿼리
- 쿼리 결과에서 첫 번째 행의 첫 번째 열의 값을 반환함
- 단일 값을 반환하는 쿼리에서 주로 사용함 (COUNT, SUM, MIN, ...)
using (var conn = new SqlConnection(connectionString))
{
var sql = @"
SELECT COUNT(*)
FROM VISITOR
WHERE VISITOR_TYPE = @visitorType
";
// 쿼리 결과의 값을 int 타입으로 반환함
var count = conn.ExecuteScalar<int>(sql, new { visitorType });
}
단일 행 쿼리
1) QuerySingle
- 쿼리 결과로 정확히 1개의 행만 반환되는 경우 사용함
- 결과 행이 0개거나, 2개 이상이면 InvalidOperationException 발생
var sql = @"SELECT * FROM Product WHERE ProductID = @productID";
var product = conn.QuerySingle<Product>(sql, new { productID = 1 });
2) QuerySingleOrDefault
- 결과 행이 0개면 null 반환
- 결과 행이 2개 이상이면 InvalidOperationException 발생
var sql = @"SELECT * FROM Product WHERE ProductID = @productID";
var product = conn.QuerySingleOrDefault<Product>(sql, new { productID = 1 });
3) QueryFirst
- 쿼리 결과로 1개 이상의 행이 반환될 때, 첫 번째 행만 가져옴
- 결과 행이 0개면 InvalidOperationException 발생
var sql = @"SELECT * FROM Product WHERE ProductID = @productID";
var product = conn.QueryFirst<Product>(sql, new { productID = 1 });
4) QueryFirstOrDefault
- 결과 행이 0개면 null 반환
- 결과 행이 2개 이상이면 InvalidOperationException 발생
var sql = @"SELECT * FROM Product WHERE ProductID = @productID";
var product = conn.QueryFirstOrDefault<Product>(sql, new { productID = 1 });
다중 행 쿼리
var sql = @"SELECT * FROM Product WHERE CategoryID = @categoryID";
var products = conn.Query<Product>(sql, new { categoryID = 1 }).ToList();
SELECT 프로시저 실행
conn.Query<Product>("프로시저명", parameters, commandType: System.Data.CommandType.StoredProcedure).ToList();
컬럼 값 가져오기
var sql = @"SELECT ProductID, Name FROM Product WHERE CategoryID = @categoryID";
var products = conn.Query(sql, new { categoryID = 1 }).ToList();
foreach(var product in products)
{
// 변수명.컬럼명으로 접근 가능
Console.WriteLine($"ProductID: {product.ProductID}; Name: {product.Name}; Description: {product.CategoryID}");
}
320x100
반응형
'C#' 카테고리의 다른 글
[C#/dotnet] 권한 부여 (Authorize) (0) | 2024.11.22 |
---|---|
[C#/Dapper] INSERT · UPDATE · DELETE 쿼리 / 프로시저 실행 (1) | 2024.11.14 |
[C#] 값 형식 (Value types) & 참조 형식 (Reference types) (0) | 2024.10.25 |
[C#/dotnet] 라우팅 (Routing) (4) | 2024.10.25 |
[C#/dotnet] 서버 컨트롤 (0) | 2024.10.24 |