LINQ to DB : 가장 빠른 LINQ 데이터베이스 엑세스 라이브러리

LINQ to DB는 LINQ 문법 또는 메소드 방식으로 데이터베이스에 질의할 수 있게 해주는 라이브러리 입니다.

Dapper와 다른 점은 Dapper가 SQL을 사용해서 POCO 개체와 매핑한다면 LINQ to DB는 LINQ를 써서 매핑한다는 점입니다.

Entity Framework에 익숙한 분이라면 LINQ의 유익 – 컴파일 시점에서 질의문 오류 확인 – 을 백분 활용하면서 빠르게 데이터베이스에 엑세스할 수 있습니다.

특징

  • 변경 사항 추적 기능 없음
  • 명시적 조인 구문
  • CTE 지원
  • 대량 복사/삽입 지원
  • 윈도우/분석 함수
  • 머지 API
public class DbNorthwind : LinqToDB.Data.DataConnection
{
  public DbNorthwind() : base("Northwind") { }

  public ITable<Product>  Product  => this.GetTable<Product>();
  public ITable<Category> Category => this.GetTable<Category>();

  // ... other tables ...
}
using LinqToDB;
using LinqToDB.Common;

public static List<Product> GetProducts()
{
  using var db = new DbNorthwind();

  var query = from p in db.Product
                where p.ProductID > 25
                orderby p.Name descending
                select p;

  return query.ToList();
}

다양한 DB를 지원합니다.



10 Likes

RawDataAccessBencher/Results/20231218_net8.txt at master · FransBouma/RawDataAccessBencher (github.com)

흥미롭길래, 벤치 마크를 찾아 봤는데, 결과는 더 흥미롭네요.^^

EF core의 쿼리 컴파일 기능을 사용하지 않으면, 셋 중에 뭐가 더 낫다고 단정하기가 힘들어 보이지만, 사용하면, EF core 가 속도면에서는 가장 좋은 것 같습니다.

6 Likes