您的位置:首页 > 其它

在 DLinq 发布之前用什么查询数据?OQL.NET 介绍 (1)

2006-09-03 15:27 429 查看
DLinq 无疑将成为今后数据库处理的利器之一,它具有语言无关、强类型、编译检查等优点。虽然 DLinq 自出现以来受到的褒贬不一,目前也只是支持 SQL Server,但这不是本文要讨论的话题。

在 DLinq 发布之前,然道我们依旧只能用字符串拼拼凑凑,来写那些难以维护的 SQL 语句?也许有人会说,用 O/R Mapping 吧。我们应该看到 O/R Mapping 并不是包治百病的良药,在处理复杂的查询时,O/R Mapping 就不合适了,这时大多数人的选择还是基于字符串的 SQL 语句。

现在,我们可以选择另一种查询方案—— OQL.NET。

我们来看看下面的 SQL 语句:

select * from Customers c where c.City = 'London' order by c.ContactName

我们先来看看用 DLinq 如何写:

var q =

from c in Customers

where c.City == "London"

orderby c.ContactName

select c;

我们可以看到,采用 Lambda 表达式为基础的 DLinq 虽然是语言集成的,但它并不是嵌入式 SQL。DLinq 和 SQL 有着很大的差异,在写复杂的查询时更是如此,开发者需要进行一段时间学习才能很好地掌握它。

我们再来瞧瞧用 OQL.NET 如何写:

SelectQuery q = OQL

.SelectFrom ( NW.Customer )

.Where ( NW.Customer.City == "London" )

.OrderBy ( NW.Customer.ContactName );

OQL.NET 采用级联表达式的方式对 SQL 进行了高度模仿,大大降低了学习成本和入门门槛,这种好处是不言而喻的。OQL.NET 的级联表达式是上下文关联的,比如 where 只能在from 之后,having 只能在 groupby 之后等等,这样的设计除了能在 IDE 中得到上下文帮助之外,还能引导初学者写出正确的查询语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐