多个数据库服务器的SQL查询生成器
问题描述:
我想在我的Petapoco ORM项目中支持多个DBMS',例如:Oracle,SQL Server,MySQL等。所以我需要使用支持多个数据库的SQL查询构建器。多个数据库服务器的SQL查询生成器
的查询问题一个基本的例子:
在SQL Server的查询来获取前2条记录是:
SELECT TOP 2 * FROM table_name
但甲骨文是:
SELECT * FROM table_name WHERE ROWNUM <=2
答
+0
我喜欢它,但它不能完全解决我的问题。 – 2013-05-12 13:41:26
答
尝试EasyQuery。
这个库有一个查询对象,它用来以某种内部格式存储查询并生成SQL。查询对象具有Formats属性,它允许您调整生成的SQL语句的语法。对于大多数流行的DB(MS SQL Server,Oracle,MySQL等),有几个预定义的值。
答
使用内置的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
答
这里是它是如何与DbExtensions做到:
var db = new Database("name=Northwind");
var query = db.From("products")
.Take(2);
这是一个很奇怪的ORM,不生成SQL查询本身。你为什么不使用实体框架? – Dennis 2013-05-10 17:46:40
我更喜欢petapoco,因为实体框架比petapoco和笨重。 – 2013-05-10 17:50:22
PetaPOCO如此快速和轻便的原因是,因为它本身并不会产生大部分查询。你似乎打败了使用它的目的。 – Tory 2013-05-10 19:47:30