Dapper ORM 및 페이징 및 정렬 확장

dapper

문제

Oracle과 SQL 서버 모두에 사용할 수있는 일반 DAL에 대해 Dapper를 사용하고 있습니다. 페이징 및 정렬 방법을 제공하여 SQL 구문을 수동으로 작성 / 변경하지 않고도 SQL 및 Oracle 모두에서 작동 할 수있는 최선의 방법은 무엇입니까? 같은 것 :

var users= Dapper
           .Query<User>(sqlStatment
                        .Skip(10)
                        .Take(10)); // where sqlStatment string

수락 된 답변

@Alex가 지적했듯이, 페이징은 원하는 두 데이터베이스에서 다르게 수행되므로 최적화 된 쿼리를 가장 효과적으로 사용하려면 각각에 대해 별도의 쿼리를 작성하는 것이 가장 좋습니다.

아마도 각 데이터베이스를 제공하는 두 개의 데이터 공급자 어셈블리를 만드는 것이 가장 좋습니다.

  • Data.Provider.Sql
  • Data.Provider.Oracle

그런 다음 두 가지 중 하나에 맞게 응용 프로그램을 구성하십시오. 나는 의도적으로 Data.Provider 네임 스페이스 (일부 Data 어셈블리의 일부일 수 있음)를 작성했으며 상위 공급자가 구현하는 모든 Data Provider 인터페이스 ( Data.Provider 내)를 정의합니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.