我想在我的 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
使用内置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
试试EasyQuery。
该库具有 Query 对象,用于以某种内部格式存储查询并生成 SQL。Query 对象具有 Formats 属性,可让您调整生成的 SQL 语句的语法。大多数流行的数据库(MS SQL Server、Oracle、MySQL 等)都有几个预定义的值。
以下是使用DbExtensions完成的方法:
var db = new Database("name=Northwind");
var query = db.From("products")
.Take(2);