我想在我的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
答案 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)
答案 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);