1

我想在我的 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

4 回答 4

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

于 2013-06-25T12:44:44.363 回答
0

试试EasyQuery

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

于 2013-05-13T09:18:10.280 回答
0

以下是使用DbExtensions完成的方法:

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

var query = db.From("products")
   .Take(2);
于 2014-06-01T01:29:01.543 回答
0

尝试DBExtensions

DbExtensions 类库

SqlBuilder 教程

希望这可以帮助!

于 2013-05-10T17:43:56.700 回答