o945 发表于 2006-9-4 21:22

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

<P>DLinq 无疑将成为今后数据库处理的利器之一,它具有语言无关、强类型、编译检查等优点。虽然 DLinq 自出现以来受到的褒贬不一,目前也只是支持 SQL Server,但这不是本文要讨论的话题。<o:p></o:p></P>
<P><o:p></o:p></P>
<P>在 DLinq 发布之前,然道我们依旧只能用字符串拼拼凑凑,来写那些难以维护的 SQL 语句?也许有人会说,用 O/R Mapping 吧。我们应该看到 O/R Mapping 并不是包治百病的良药,在处理复杂的查询时,O/R Mapping 就不合适了,这时大多数人的选择还是基于字符串的 SQL 语句。<o:p></o:p></P>
<P><o:p></o:p></P>
<P>现在,我们可以选择另一种查询方案—— OQL.NET。<o:p></o:p></P>
<P><o:p></o:p></P>
<P>我们来看看下面的 SQL 语句:<o:p></o:p></P>
<P align=left>  select * from Customers c where c.City = '<st1:place w:st="on"><st1:city w:st="on">London</st1:city></st1:place>' order by c.ContactName<o:p></o:p></P>
<P><o:p></o:p></P>
<P>我们先来看看用 DLinq 如何写:<o:p></o:p></P>
<P align=left>  var q =<br>    from c in Customers<br>    where c.City == "<st1:place w:st="on"><st1:city w:st="on">London</st1:city></st1:place>"<br>    orderby c.ContactName<br>    select c;<o:p></o:p></P>
<P>我们可以看到,采用 Lambda 表达式为基础的 DLinq 虽然是语言集成的,但它并不是嵌入式 SQL。DLinq 和 SQL 有着很大的差异,在写复杂的查询时更是如此,开发者需要进行一段时间学习才能很好地掌握它。<o:p></o:p></P>
<P><o:p></o:p></P>
<P>我们再来瞧瞧用 OQL.NET 如何写:<o:p></o:p></P>
<P align=left>  SelectQuery q = OQL<br>    .SelectFrom ( NW.Customer )<br>    .Where ( NW.Customer.City == "<st1:city w:st="on"><st1:place w:st="on">London</st1:place></st1:city>" )<br>    .OrderBy ( NW.Customer.ContactName );<o:p></o:p></P>OQL.NET 采用级联表达式的方式对 SQL 进行了高度模仿,大大降低了学习成本和入门门槛,这种好处是不言而喻的。OQL.NET 的级联表达式是上下文关联的,比如 where 只能在from 之后,having 只能在 groupby 之后等等,这样的设计除了能在 IDE 中得到上下文帮助之外,还能引导初学者写出正确的查询语句。<br><br>转自:<a href="http://www.cnblogs.com/kimphi" target="_blank" >http://www.cnblogs.com/kimphi</A>
[align=right][color=#000066][此贴子已经被作者于2006-9-5 19:44:58编辑过][/color][/align]

finix 发表于 2008-6-12 15:31

好的LINQ资料和大家分享

[url=http://www.5dage.cn/frame.php?frameon=yes&referer=http%3A//www.5dage.cn/]http://www.5dage.cn/frame.php?frameon=yes&referer=http%3A//www.5dage.cn/[/url]

finix 发表于 2008-6-12 15:33

错了

好的LINQ资料和大家分享

http://www.5dage.cn/frame.php?frameon=yes&referer=http%3A//www.5dage.cn/

页: [1]

编程论坛