新Orcas语言特性:扩展方法(5)

作者:Scott Guthrie 来源:Scott Guthrie博客中文版 时间:2007-09-23 12:49:00 

使用场景三:对数据库使用LINQ扩展方法

假定我们拥有一个SQL数据库,内含一个叫“People”的表,具有下列数据定义:

我可以使用Visual Studio中新的LINQ到SQL的所见即所得(WYSIWYG) orM设计器,快速地创建一个映射到数据库的“Person”类:

然后我可以使用我先前用于对象和XML文件同样的LINQ Where() 扩展方法,从数据库中获取firstname的首字符为“S”的强类型“Person”对象序列:

注意,查询句法与对象和XML场景中的一模一样。

然后我也可以使用与前面一样的 LINQ Average() 和Max() 扩展方法来从数据库里获取平均和最大值,象这样:

要使上面代码例子工作,你自己不需编写任何SQL代码。Orcas中提供的LINQ到SQL对象关系映射器会处理获取,跟踪,和更新映射到你的数据库数据定义和存储过程的对象。你只要使用任何LINQ扩展方法对结果进行过滤和构形即可,LINQ到SQL会执行获取数据所需的SQL代码(注意,上面的 Average和Max 扩展方法很明显地不会从数据表中返回所有的数据行,它们会使用TSQL的聚合函数来计算数据库中的值,然后只返回一个标量值)。

请观看我一月份制作的一个录像,演示了LINQ到SQL如何显著地改进了Orcas中的数据生产力。录像中,你也可以看到新的LINQ到SQL的所见即所得ORM设计器的实战示范,以及对数据模型编写LINQ代码时代码编辑器提供的完整的 intellisense。

结语

希望上面的帖子给了你一个对扩展方法工作原理的基本理解,以及你能够利用它们来实现的一些酷扩展性方式。跟任何扩展性机制一样,我要告诫你别一开始就滥建新的扩展方法。不能因为你有一个闪亮的新榔头,就意味着世界上所有的东西突然都变成钉子了!

想着手开始尝试扩展方法的话,我建议你先探究一下Orcas中System.Linq命名空间中提供的标准查询操作符。这些操作符提供了对任何数组,集合,XML流,或关系数据库做丰富的查询的支持,可以极大地改进你操作数据时的生产力。我认为你会发现它们极大地减小了你要在你应用中编写的代码量,允许你编写非常干净和描述性强的语句。它们也允许你在你编码中得到查询逻辑自动的intellisense 和编译时检查。

在下几个星期里,我将继续这个关于Orcas中新语言特性的系列,探讨匿名类和类的推断(Type Inference),还会讨论Lambda的细节和其他酷特性。很明显地,我还会地更多地讨论LINQ。

希望本文对你有所帮助,

Scott

标签:Orcas,扩展
0
投稿

猜你喜欢

  • 关于多域名COOKIES作用域的问题

    2008-11-18 16:12:00
  • SQL Server 2016正式版安装配置过程图文详解

    2024-01-26 05:27:15
  • win10 64位 MySQL8.0下载和安装教程图解

    2024-01-13 06:34:29
  • Mysql常用sql语句汇总

    2024-01-21 04:31:48
  • python多进程读图提取特征存npy

    2022-09-05 11:38:06
  • 详解ABP框架中Session功能的使用方法

    2024-05-13 09:16:28
  • Python中常用的os操作汇总

    2022-12-13 08:30:16
  • Python获取江苏疫情实时数据及爬虫分析

    2022-09-19 02:12:30
  • Go语言基础函数基本用法及示例详解

    2024-05-09 14:57:15
  • 简单谈谈JS中的正则表达式

    2023-07-22 00:50:22
  • mysql查询本周内每天统计量按天展示的示例代码

    2024-01-22 07:05:01
  • MySQL无法存储Emoji表情问题的解决方法分析

    2024-01-22 00:32:13
  • Flyway的简单介绍及使用详解

    2022-05-05 07:35:34
  • 使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇

    2024-06-05 09:32:20
  • python文件读写操作与linux shell变量命令交互执行的方法

    2022-10-24 06:37:55
  • asp如何获知文件最后的修改日期和时间?

    2009-11-24 20:49:00
  • php 文件缓存函数

    2023-11-06 15:28:47
  • PHP设计模式之模板方法模式Template Method Pattern详解

    2023-05-25 00:24:26
  • 详解多线程Django程序耗尽数据库连接的问题

    2024-01-23 02:27:14
  • python中format的用法实例详解

    2023-08-03 12:27:28
  • asp之家 网络编程 m.aspxhome.com