2013-05-10 2 views
1

필자의 Petapoco ORM 프로젝트에서 Oracle, SQL Server, MySQL 등 여러 DBMS를 지원하고 싶습니다. 그래서 여러 데이터베이스를 지원하는 SQL 쿼리 작성기를 사용해야합니다.여러 데이터베이스 서버에 대한 SQL 쿼리 빌더

쿼리 문제에 대한 기본 예제 :

상위 2 기록을 얻기 위해 SQL Server의 쿼리는 다음과 같습니다

SELECT TOP 2 * FROM table_name 

그러나 오라클에서는 다음과 같습니다

SELECT * FROM table_name WHERE ROWNUM <=2 
+0

이것은 SQL 쿼리 자체를 생성하지 않는 아주 이상한 ORM이다. 왜 Entity Framework를 사용하지 않습니까? – Dennis

+0

엔티티 프레임 워크가 petapoco보다 속도가 빠르며 부피가 크기 때문에 petapoco를 선호합니다. –

+1

PetaPOCO가 매우 빠르고 가벼운 이유는 대부분의 쿼리 자체를 생성하지 않기 때문입니다. 당신은 그것을 사용하는 목적을 무너 뜨리는 것처럼 보입니다. – Tory

답변

0

시도 EasyQuery.

이 라이브러리에는 쿼리를 내부 형식으로 저장하고 SQL을 생성하는 데 사용되는 Query 개체가 있습니다. 쿼리 개체에는 생성 된 SQL 문의 구문을 조정할 수있는 Formats 속성이 있습니다. 가장 많이 사용되는 DB (MS SQL Server, Oracle, MySQL 등)에 대한 몇 가지 사전 정의 된 값이 있습니다.

1

내장 된 Page 메서드 또는 SkipTake을 사용하십시오.

SQL 주위에 페이징 코드를 래핑합니다.

예 : 이것은 오라클 및 SQL Server 모두 작동합니다

select * from (select *, row_number() over (order by id) from table_name) poco 
where row_num between 0 and 10 

:

db.Fetch<User>(1, 10, "select * from table_name order by id"); 

이 뭔가를 생성합니다. MySQL과 Postgres는 자체 변종을 사용합니다. 예를 들어 LIMIT

0

여기가 DbExtensions으로 이루어집니다 방법은 다음과 같습니다

var db = new Database("name=Northwind"); 

var query = db.From("products") 
    .Take(2);