多个数据库服务器的SQL查询构建器

时间:2013-05-10 17:33:45

标签: c# sql rdbms petapoco

我想在我的Petapoco ORM项目中支持多个DBMS,例如:Oracle,SQL Server,MySQL等。所以我需要使用支持多个数据库的SQL查询构建器。

查询问题的基本示例:

SQL Server中获取前2条记录的查询是:

SELECT TOP 2 * FROM table_name

但在Oracle中它是:

SELECT * FROM table_name WHERE ROWNUM <=2

4 个答案:

答案 0 :(得分:1)

使用内置的Page方法或SkipTake

它将在您的sql周围包装分页代码。

例如

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

这将生成如下内容:

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

这适用于Oracle和Sql Server。 Mysql和Postgres将使用他们自己的变种。例如LIMIT

答案 1 :(得分:0)

尝试DBExtensions

  

DbExtensions Class Library

     

SqlBuilder Tutorial

希望这有帮助!

答案 2 :(得分:0)

尝试EasyQuery

该库具有Query对象,用于以某种内部格式存储查询并生成SQL。 Query对象具有Formats属性,允许您调整生成的SQL语句的语法。大多数流行的数据库(MS SQL Server,Oracle,MySQL等)都有几个预定义的值。

答案 3 :(得分:0)

以下是DbExtensions

的完成方式
var db = new Database("name=Northwind");

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