ASP.NET 4.0网站开发实例教程 教学课件 ppt 作者 978-7-302-30496-8 ch06

上传人:E**** 文档编号:89335659 上传时间:2019-05-23 格式:PPT 页数:35 大小:219.50KB
返回 下载 相关 举报
ASP.NET 4.0网站开发实例教程 教学课件 ppt 作者 978-7-302-30496-8 ch06_第1页
第1页 / 共35页
ASP.NET 4.0网站开发实例教程 教学课件 ppt 作者 978-7-302-30496-8 ch06_第2页
第2页 / 共35页
ASP.NET 4.0网站开发实例教程 教学课件 ppt 作者 978-7-302-30496-8 ch06_第3页
第3页 / 共35页
ASP.NET 4.0网站开发实例教程 教学课件 ppt 作者 978-7-302-30496-8 ch06_第4页
第4页 / 共35页
ASP.NET 4.0网站开发实例教程 教学课件 ppt 作者 978-7-302-30496-8 ch06_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《ASP.NET 4.0网站开发实例教程 教学课件 ppt 作者 978-7-302-30496-8 ch06》由会员分享,可在线阅读,更多相关《ASP.NET 4.0网站开发实例教程 教学课件 ppt 作者 978-7-302-30496-8 ch06(35页珍藏版)》请在金锄头文库上搜索。

1、2019年5月23日,第1页,第6章 LINQ,教学目标 本章内容,2019年5月23日,第2页,教学目标,LINQ及其语法 LINQ的各种形式及其适用场合 了解ADO.NET Entity Framework 使用EntityDataSource控件来访问EF ListView控件和DataPage控件的使用,2019年5月23日,第3页,本章内容,6.1 LINQ简介 6.2 ADO.NET Entity Framework(EF) 6.3 LINQ查询语法 6.4 使用数据控件和LINQ 6.5 本章小结 6.6 思考和练习,2019年5月23日,第4页,本章内容,6.1 LINQ简介

2、6.2 ADO.NET Entity Framework(EF) 6.3 LINQ查询语法 6.4 使用数据控件和LINQ 6.5 本章小结 6.6 思考和练习,2019年5月23日,第5页,6.1 LINQ简介,LINQ,是一种与.NET Framework中使用的编程语言紧密集成的新查询语言。它是在.NET 3.5以后引入的,所以在.NET 2.0及以前的版本中是不能使用LINQ的。 LINQ使得可以像使用SQL查询数据库的数据那样从.NET编程语言中查询数据。 LINQ并不只是.NET Framework的一个增件。相反,它被设计和实现为.NET编程语言中的一部分。 LINQ相关的类都放

3、在System.Linq命名空间,所以要使用LINQ,必须引入该命名空间: using System.Linq;,2019年5月23日,第6页,LINQ to Objects,使用LINQ to Objects,可以查询.NET Framework中的几乎所有集合。实际上,使用LINQ to Objects对内存中的所以对象进行简单查询是非常方便的。 使用LINQ的查询通常由3个步骤组成: (1) 获得数据源 (2) 创建查询 (3) 执行查询,2019年5月23日,第7页,LINQ与泛型,LINQ查询是建立在泛型这种数据类型的基础之上的 当创建泛型集合类(如List)的实例时,需要将“T”替

4、换为集合中指定的对象类型。如字符串集合表示为List。因为泛型集合是强类型的,所以比将元素存储为Object类型的集合要强大得多。如果试图将一个int类型的对象添加到List,则会产生编译错误。 IEnumerable表示的是一个接口,通过该接口可以使用foreach语句来遍历泛型集合类。LINQ查询变量可以类型化为IEnumerable或者它的派生类,如IQueryable。 为了避免使用泛型语法,可以使用匿名类型来声明查询,即使用var关键字来声明查询。var关键字指示编译器通过查看在from子句中指定的数据来推断查询变量的类型。,2019年5月23日,第8页,LINQ to XML,LI

5、NQ to XML是读、写XML的一种新的.NET方法。现在,可以在应用程序中编写直接针对XML的LINQ查询,而不是使用普通的XML查询语言,如XSLT或XPath。 在System.Xml.Linq命名空间中定义了很多LINQ to XML的类,其中XElement类是LINQ to XML中最基础的类,使用它可以创建一个XMl元素,使用XAttribute类可以为元素添加属性,使用XNamespace类可以为XML定义命名空间。,2019年5月23日,第9页,LINQ to ADO.NET,使用LINQ to ADO.NET,可以查询与数据库相关的信息集,包括LINQ to Entiti

6、es、LINQ to DataSet和LINQ to SQL。 LINQ to Entities是LINQ to SQL的超集,比LINQ to SQL有更丰富的功能。不过,对于大多不同类型的应用程序来说,LINQ to SQL足够了。 LINQ to DataSet允许对DataSet编写查询。 LINQ to SQL允许在.NET项目中编写针对Microsoft SQL Server数据库的面向对象的查询。LINQ to SQL将LINQ查询转换为SQL语句,然后再发送到数据库中执行CRUD的4种操作。在ASP.NET 4中,Microsoft已经表示不会再积极开发LINQ to SQL,

7、这是因为LINQ to SQL与Entity Framework(EF)在功能上有很大的重叠。与LINQ to SQL相比,EF的功能要强大得多,,2019年5月23日,第10页,本章内容,6.1 LINQ简介 6.2 ADO.NET Entity Framework(EF) 6.3 LINQ查询语法 6.4 使用数据控件和LINQ 6.5 本章小结 6.6 思考和练习,2019年5月23日,第11页,6.2 ADO.NET Entity Framework(EF),通过使用ADO.NET Entity Framework(EF),可以把许多数据库对象(如表)转换成可以在代码中直接访问的.NE

8、T对象。然后就可以在查询中或者直接在数据绑定中使用这些对象。EF也允许执行相反操作:首先设计一个对象模型,然后让EF创建必要的数据库结构。,2019年5月23日,第12页,ADO.NET EF简介,通过ADO.NET EF,在使用数据库时不必编写大量代码。ADO.NET Entity Framework在后台大量使用LINQ。使用EF十分简单,并且十分灵活。通过使用关系图设计器,可以将表等数据库对象拖放到实体模型中。放到关系图中的对象将成为可用的对象。例如,如果将Z_USER表放到关系图中那么就将得到一个强类型的Z_USER类。可以使用LINQ查询或者其他方式创建这个类的实例。,2019年5月

9、23日,第13页,将数据模型映射到对象模型,通过使用EF,可以把数据库项(如表、列和数据库中的关系)映射到应用程序的对象模型中的对象和属性。VWD提供了“ADO.NET实体数据模型”模板和很多相关的工具来尽可能简化这种映射。 在生成模型后,对其执行LINQ查询,即可从底层数据库中获取数据。要访问这些数据,需要一个ObjectContext类的实例。,2019年5月23日,第14页,本章内容,6.1 LINQ简介 6.2 ADO.NET Entity Framework(EF) 6.3 LINQ查询语法 6.4 使用数据控件和LINQ 6.5 本章小结 6.6 思考和练习,2019年5月23日,

10、第15页,6.3 LINQ查询语法,LINQ语法并不是专门为Entity Framework设计的。下面介绍的大多数LINQ概念同样适用于其他LINQ实现,如LINQ to Objects和LINQ to ADO.NET等。 LINQ支持大量的查询操作符可用于选择、排序或筛选从查询返回的数据的关键字。尽管本章所有示例是在LINQ to EF的背景下讨论的,但也可以将它们应用到其他LINQ实现中。,2019年5月23日,第16页,基本语法,from select where orderby Sum、Min、Max、Average和Count Take、Skip、TakeWhile和SkipWhi

11、le Single和SingleOrDefault First、FirstOrDefault、Last和LastOrDefault,2019年5月23日,第17页,from,LINQ查询表达式必须以from子句开头。尽管from子句不能算是标准查询操作符,因为它并不对数据进行操作而是指向数据,但它是LINQ查询中的一个重要元素,因为它定义了查询所执行的集合或数据源。在例6-3中的from子句指定了查询必须对EF中的weiboEntity对象所提供的Z_USER集合执行。,2019年5月23日,第18页,select,select关键字用于从查询的源中检索对象。例如,下面的查询是选择已有类型的一

12、个对象。 var allUser = from user in weiboEntity.Z_USER select user; 这一示例中的变量user是范围变量(range variable),它只在当前查询中可用。通常在from子句中引入范围变量,然后在where和select子句中再次使用它来筛选数据,表明要选择的数据。范围变量的名称通常看到的都是单个字母的变量,如u,或所查询集合的单数形式user。,2019年5月23日,第19页,where,和SQL中的WHERE子句一样,LINQ中的where子句允许筛选查询返回的对象。where子句的后面是一个逻辑表达式,例如,下面的查询将返回所

13、有性别为“男”的用户信息: var allUser = from user in weiboEntity.Z_USER where user.user_sex=“男“ select user;,2019年5月23日,第20页,orderby,使用orderby可以对结果集合中的项进行排序。orderby后面可以通过逗号分隔来指定多个条件。紧跟着的是可选的用来指定排序顺序的ascending(升序)和descending(降序)关键字,默认排序方式为升序。,2019年5月23日,第21页,Sum、Min、Max、Average和Count,这些聚集运算符允许在结果集中的对象上进行数学计算。Sum

14、是求和运算符;Min是求最小值运算符;Max是求最大值运算符;Average是求平均值运算符;Count是计数运算符。例如,要检索指定用户的听众数,可以执行如下查询: Count方法需要作用在整个结果集上,因此,需要将整个语句都扩到括号中,然后再调用Count方法。,2019年5月23日,第22页,Take、Skip、TakeWhile和SkipWhile,Take和Skip允许在结果集中作子选择。这通常用于分页情况,其中只检索当前页面的记录。Take从结果集中获取所请求数量的元素,然后忽略其余的;而Skip则相反,它跳过请求数量的元素,然后返回其余的。 在EF中,Take和Skip操作符也被

15、转换为SQL语句。这意味着分页是在数据库级发生的,而不是在ASP.NET页面中。这大大增强了查询的性能,特别是对于一些较大的结果集更是如此,因为不是所有的元素都必须从数据库转移到ASP.NET页面中。,2019年5月23日,第23页,Single和SingleOrDefault,Single和SingleOrDefault操作符允许返回单个对象作为强类型化实例。 如果请求的项未找到或是查询返回多个实例,Single操作符就会引发异常。如果想让该方法返回null(没找到),或是返回相关数据类型的默认值(如Integer型的0、Boolean型的False等),则使用SingleOrDefault

16、。 即使查询结果只有一条记录,如果未调用Single,则仍会返回一个列表集合。通过使用Single,可强制结果集为所查询类型的单个实例。,2019年5月23日,第24页,First、FirstOrDefault、Last和LastOrDefault,这些操作符允许返回特定对象序列对象中的第一个或最后一个元素。和Single方法一样,如果集合为空,First和Last就会抛出异常,而FirstOrDefault和LastOrDefault则返回相关数据类型的默认值。 与Single不同的是,当查询返回多个项时,First、FirstOrDefault、Last和LastOrDefault操作符并不抛出异常。 EF中并不支持Last和LastOrDefault查询。不过,通过使用First和降序排列可实现与之相同的操作。,2019年5月23日,第25页,使用匿名类型定形数据,匿名类型是一种不需要像使用其他类型(如类)时那样预先定义名称的类型。而是可以通过选择数据,然后让编译器推断其类型来进行构造。 创建匿名类型的方法很简单;不需要使用像select user这样的语句选择实际的对象

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号