《第6章ASP.NET数据库编程.ppt》由会员分享,可在线阅读,更多相关《第6章ASP.NET数据库编程.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 在前面的章节中提到了实际开发需要用到数据库,数据库在任何应用程序开发中都非常重要。数据库通常被用来存储用户信息、新闻内容等数据,也是查询、搜索的基础条件。从本章开始,将介绍ASP.NET的数据库编程开发,现今大多数Web应用程序都基于数据库,如电子商务、网络选课、校友录等。数据库具有强大管理与存储数据的能力,ADO.NET是一个中间的数据访问层,ASP.NET通过ADO.NET来操作数据库。6.1ADO.NET的数据访问6.2数据源控件 6.3数据绑定控件 6.4LINQ 6.1ADO.NET的数据访问ADO.NET是.NET Framework中的一系列类库,它使开发人员更加方便地在开发过
2、程中使用和操作数据。在ADO.NET中,大量复杂数据操作的代码被封装起来,所以开发人员在ASP.NET应用程序开发中,只需要编写少量的代码即可处理大量的操作。6.1.1 ADO.NET基础ADO.NET中常用的对象有以下几种。Connection对象:数据库连接对象,建立与物理数据库的连接。Transaction对象:数据库事务对象,与事务处理相关的类。DataAdapter对象:一个中间对象,一方面从数据库中获取数据并填充到DataSet对象中,另一方面用来将DataSet中的更改数据更新到数据库中,该对象介于连接对象与非连接对象之间,因此可以看作是一个适配器对象。Command对象:数据命
3、令对象,ADO.NET中使用这个对象向数据库发送查询、更新、删除、修改操作的SQL语句。Parameter对象:参数对象,为Command对象中的SQL语句提供参数。DataReader对象:数据读取器对象,提供只读前向的游标,用于快速读取数据。6.1.2 连接数据库ADO.NET通过ADOConnection连接到数据库,与ADO的Connection对象相似的是,ADOConnection同样包括Open和Close方法。Open表示打开数据库连接,Close表示关闭数据库连接。在每次打开数据库连接后,都需要关闭数据库连接。6.1.2 连接数据库建立连接ADO.NET 3.5提供了SqlC
4、onnectionStringBuilder对象,使用该对象可以以属性的方式构建连接字符串,这不仅增加了使用连接字符串的安全性,而且让构建连接字符串更加方便。此外使用SqlConnectionStringBuilder还可以利用VS2008强大的IntelliSense特性。连接字串格式如下。server=服务器地址;database=数据库名称;uid=数据库用户名;pwd=数据库密码;示例代码如下。string connString; /声明连接字串connString = “server=(local);database=Forum;uid=sa;pwd=123654789;6.1.2
5、连接数据库使用SqlConnectionStringBuilder构建连接字符串的代码如下。string connString; /声明连接字串connString = server=(local);database=Forum;uid=sa;pwd=123654789;/设置连接字串SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connString); 数据库连接在使用完毕后应该尽早地被释放,SqlConnection类提供了Close方法,用于关闭一个连接。6.1.2 连接数据库在web.config
6、配置文件中保存连接字符串。在web.config中统一配置网站数据库连接字符串,这样整个网站项目中需要用到连接字符串时,只需要使用ConfigurationManager类中的ConnectionStrings属性来调用即可。下面是在web.config中配置连接字符串的代码。 6.1.2 连接数据库在程序中调用数据库连接字符串的代码如下。private static readonly string ConnString = ConfigurationManager.ConnectionStrings networkcn.ConnectionString;6.1.3 与数据库交互整个数据库操作
7、的过程可以分为3个步骤:第一,创建数据库连接;第二,执行数据操作命令;第三,关闭数据库。实现这个3个过程的完整步骤如下。 (1)创建一个连接对象。 (2)使用对象的Open方法打开连接。 (3)创建一个封装SQL命令的对象。 (4)调用执行命令的对象。 (5)执行数据库操作。 (6)执行完毕,释放连接。6.1.3 与数据库交互6.1.3 与数据库交互Command执行对象 Command对象可以使用数据命令直接与数据源进行通信。例如,当需要执行一条插入语句,或者删除数据库中的某条数据时,就需要使用Command对象。Command对象的属性包括了数据库在执行某个语句的所有必要的信息,这些信息如
8、下。 Name:Command的程序化名称。 Connection:对Connection对象的引用。 CommandType:指定是使用SQL语句还是存储过程,默认情况下是SQL语句。 CommandTest:命令对象包含的SQL语句或存储过程名。 Parameters:命令对象的参数。6.1.3 与数据库交互Command执行对象 通常情况下,Command对象用于数据的操作,如执行数据的插入和删除,也可以执行数据库结构的更改,包括表和数据库。string connString; /声明连接字串connString = server=(local);database=Forum;uid=s
9、a;pwd=123654789;SqlConnection conn = new SqlConnection(connString); /新建SQL连接conn.Open(); /打开数据库连接SqlCommand cmd = new SqlCommand(insert into tbClass values (className), conn); /建立Command对象6.1.3 与数据库交互Command执行对象 通常创建一个Command对象的步骤如下。 声明一个有效的Connection对象。 声明一个有效的Command对象. 为Command对象指定需要操作的SQL语句字符串和关
10、联的Connection对象的实例。 打开Connection对象。 执行Command对象的各种方法进行数据库操作。 关闭Connection对象。6.1.3 与数据库交互Command执行对象 在SqlCommand类中定义用来执行SQL语句的方法如下。 ExecuteNonQuery():执行SQL语句并返回所影响的行,常用于执行一个不返回任何结果的操作。在上面实例中就是使用的这个方法向数据库中插入一条新的记录。 ExecuteReader():执行查询语句并返回SqlDataReader,常用于返回记录集的操作,如select * from tbClass;。 ExecuteScala
11、r():执行查询并返回结果的第一行第一列,常用于返回一个值的操作,如select count(*) from tbClass;。6.1.3 与数据库交互DataReader对象DataReader对象也是在线数据操作对象,它读取数据库的方式为“只读只进”。所谓只读,就是通过DataReader对象只能进行数据的读取操作;只进,是指读取记录的游标只会不断地前进,不能在读取完第4条数据之后,再返回去读取第3条记录。DataReader对象具有以下特点。 快速的数据库访问。 只进和只读,当对数据库的操作没有太大的要求时,可以使用DataReader显示数据。这些数据可以与单个list-bound控件
12、绑定,也可以填充List接口。当不需要复杂的数据库处理时,DataReader能够较快地完成数据显示。DataAdapter对象能够自动地打开和关闭连接,而DataReader对象需要用户手动管理连接。DataReader对象和DataAdapter对象很相似,都可以从SQL语句和一个连接中初始化。6.1.3 与数据库交互DataReader对象创建DataReader对象必须经过以下几个步骤。 (1)创建和打开数据库连接。 (2)创建一个Command对象。 (3)从Command对象中创建DataReader对象。 (4)调用ExecuteReader对象。DataReader对象的Rea
13、d方法可以判断DataReader对象中的数据是否还有下一行,并将游标下移到下一行。通过Read方法可以判断DataReader对象中的数据是否读完。 while (dr.Read() Response.Write(drtitle.ToString()+); 6.1.4 管理内存数据ASP.NET 3.5从数据库中读取出数据主要是存储在内存中,合理管理内存中的数据,对于整体发挥网站项目性能具有重要的作用。本节主要介绍如何使用DataSet管理内存中的数据。DataSet对象是ADO.NET中非连接类型最主要的类。该类就像是一个小型的内存数据库系统,在该类中具有数据表、数据列、数据行、约束、表间
14、关系等特性,DataSet对象为异构的数据源之间提供了一致的编程模型。6.1.4 管理内存数据数据集 数据集(DataSet)是断开连接的数据容器,DataSet的数据组织方式与数据库极其相似,实际在大多数情况下,DataSet中的数据都是数据库中数据的副本。但是,DataSet还可以从XML、CSV文件中导入记录,这为开发人员提供了一致的编程模型。 DataSet中包含DataTable对象、数据列(DataColumn对象)、数据行(DataRow对象)、视图(DataView对象)、约束(Constraint对象)、关系(DataRelation对象)。6.1.4 管理内存数据使用Dat
15、aTable实现内存表 DataSet包含一个DataTableCollection的集合,一个DataSet中可以包含多个DataTable对象,每个DataTable类似于数据库中的表,同样包括字段(DataColumn)和记录(DataRow)的集合。除此之外,还包含约束(Constraint对象)集合。约束通常用于维持列中值的一致性和完整性。另外,DataTable对象还存在着关系集合(DataRelation),类似于数据库表之间的关系。 开发人员可以将DataTable想象成一个表,并且可以通过编程的方式创建一个DataTable表。 DataTable Table = new D
16、ataTable(Forum);/创建一个DataTable对象 Table.CaseSensitive = false;/设置不区分大小写 Table.MinimumCapacity = 100;/设置DataTable初始大小 Table.TableName = tbClass;/设置DataTable的名称6.1.4 管理内存数据创建一个内存表有以下3个步骤 (1)创建一个DataTable对象实例。 (2)为该DataTable对象添加架构信息,类似于定义数据表的字段,可以为字符设置属性,定义约束等操作。 (3)向DataTable中添加行数据。6.1.4 管理内存数据DataAdap
17、ter适配器对象 在创建了数据库连接后,需要对数据集DataSet进行填充,在这里就需要使用DataAdapter对象。在没有数据源时,DataSet对象对保存在Web窗体可访问的本地数据库是非常实用的,这样降低了应用程序和数据库之间的通信次数。然而DataSet必须要与一个或多个数据源进行交互,DataAdapter就提供了DataSet对象和数据源之间的连接。6.2 数据源控件数据源控件用来配置数据源,当数据控件绑定数据源控件时,就能够通过数据源控件来获取数据源中的数据并显示,而无需通过程序实现数据源代码的编写。6.2.1 SQL数据源控件SQL数据源控件(SqlDataSource)是提
18、供ASP.NET 3.5连接到SQL数据库的数据源控件,并且SqlDataSource能够与SQL Server、Access、Oledb、Odbc以及Oracle等数据库进行交互。SqlDataSource控件提供数据的检索、插入、更新、删除、排序等功能,并且SqlDataSource在提供这些功能的同时,开发人员不需要手动编写任何代码。6.2.1 SQL数据源控件当SqlDataSource控件添加到页面后,会生成ASP.NET标签,示例代码如下。6.2.2 绑定到对象控件ASP.NET数据源控件,多数都是在两层应用程序层次结构中使用。ASP.NET充当的是表示层(网页)角色,而数据源控件
19、充当的是数据层(数据库/XML文件等)角色。但是,常用的应用程序设计原则是将表示层与业务逻辑相分离,而将业务逻辑封装在业务对象中。这些业务对象在表示层和数据层之间形成一层,从而生成一种三层应用程序结构。绑定到对象(ObjectDataSource)控件通过提供一种将相关页上的数据控件绑定到中间层业务对象的方法,为三层结构提供支持。在不使用扩展代码的情况下,ObjectDataSource使用中间层业务对象以声明方式对数据执行选择、插入、更新、删除、分页、排序、缓存和筛选操作。6.2.2 绑定到对象控件SqlDataSource用于两层模型中,页面直接访问数据库。ObjectDataSource
20、用于三层模型中,也就是页面通过中间业务对象访问数据库的。ObjectDataSource的业务对象是可以用检索或更新数据的业务对象,如Bin或App_Code目录中定义的对象。6.2.2 绑定到对象控件ObjectDataSource控件对象模型类似于SqlDataSource控件。ObjectDataSource公开一个TypeName属性,该属性指定要实例化来执行数据操作的对象类型,也就是类的名称。与SqlDataSource的命令属性类似,同样ObjectDataSource控件包括4个重要属性,这4个属性分别为SelectMethod、UpdateMethod、InsertMethod
21、和DeleteMethod,分别用于指定要执行这些数据操作关联类型的方法。选择对象后,就可以配置SelectMethod、UpdateMethod、InsertMethod和DeleteMethod属性的方法。6.2.3 绑定到XML数据XML数据源控件可以让数据绑定控件轻易地连接到XML数据源。首先建立一个名为XMLFile.xml的XML源文件,其代码如下。 新闻标题1 2008 guojing 这是新闻正文 新闻标题2 2008 guojing 这是新闻正文 6.2.3 绑定到XML数据配置XmlDataSource控件数据源“配置数据源”窗口6.2.3 绑定到XML数据XmlDataS
22、ource控件一般用于只读的数据方案。数据绑定控件显示XML数据,还可以通过XmlDataSource来编辑XML数据。但是当XmlDataSource控件加载时,必须使用DataFile属性加载,而不能从Data属性中指定的XML字符串进行加载。6.2.4 绑定到站点地图定义Web.sitemap站点地图文件。 6.2.4 绑定到站点地图定义Web.sitemap站点地图文件。 6.2.4 绑定到站点地图数据绑定控件会自动读取Web.sitmap文件并生成导航。当使用了SiteMapDataSource控件后,数据绑定控件就能够绑定SiteMapDataSource控件并自动读取相应的值并生
23、成导航。当需要对导航进行修改时,只需要修改Web.sitemap即可,这样方便了站点导航功能的使用和维护。6.3 数据绑定控件在ASP.NET 3.5中所有的数据库绑定控件都是从BaseDataBoundControl这个抽象类派生的,这个抽象类定义了以下两个重要属性和一个重要方法。DataSource属性:指定数据绑定控件的数据来源,显示时程序将会从这个数据源中获取数据并显示。DataSourceID属性:指定数据绑定控件的数据源控件的ID,显示时程序将会根据这个ID找到相应的数据源控件,并利用这个数据源控件中指定方法获取数据并显示。DataBind()方法:当指定了数据绑定控件的DataS
24、ource属性或者DataSourceID属性之后,再调用DataBind()方法才会显示绑定的数据。并且在使用数据源时,会首先尝试使用DataSourceID属性标识的数据源,如果没有设置DataSourceID时才会用到DataSource属性标识的数据源。也就是说DataSource和DataSourceID两个属性不能同时使用。6.3.1 GridView控件GridView控件的数据绑定方式可以有3种形式。 第一种先配置数据源控件,然后通过“选择数据源”选项来调用数据源控件。 第二种直接选择“选择数据源”,VS2008会使用向导来进行配置数据源。 第三种是通过编程的方式绑定数据库。6
25、.3.1 GridView控件GridView控件的字段表示类型如下。BoundField(数据绑定字段):将DataSource数据源的字段数据以文本方式显示。ButtonField(按钮字段):在数据绑定控件中显示命令按钮。根据控件的不同,它可让您显示具有自定义按钮控件(如“添加”或“移除”按钮)的数据行或数据列,按下时会引发RowCommand事件。CommandField(命令字段):显示含有命令的Button按钮,包括了Select、Edit、Update、Delete命令按钮(DetailsView的CommandField才支持Insert命令)。CheckBoxField(Ch
26、eckBox字段):显示为CheckBox类型,通常用于布尔值True/False的显示。HyperLinkField(超链接字段):将DataSource数据源字段数据显示成HyperLink超级链接,并可指定另外的NavigateUrl超链接。ImageField(图像字段):在数据绑定控件中显示图像字段。TemplateField(模板字段):显示用户自定义的模板内容。6.3.1 GridView控件要想实现GridView控件的分页功能,首先需要将AllowPaging属性的值设置为true,然后可以根据具体情况设置PageSize(分页大小)、FirstPageText(第一页)、L
27、astPageText(最后一页)、NextPageText(下一页)、PreviousPageText(上一页)等属性来设置分页的显示样式。在方法里面输入以下代码。 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) GridView1.PageIndex = e.NewPageIndex; databind(); 6.3.2 FormView控件FormView控件与GridView控件一样是用来绑定数据的控件,但是FormView控件只能显示数据库中一行的数据,当数据超过一条
28、时,就会自动显示分页。FormView控件拥有GridView控件的特性。FormView控件支持的模板如下。ItemTemplate:在FormView中呈现一个特殊的记录。HeaderTemplate:指定一个可选的页眉行。FooterTemplate:指定一个可选的页脚行。EmptyDataTemplate:在FormView的DataSource缺少记录时,EmptyDataTemplate将会代替ItemTemplate来生成控件的标记语言。PagerTemplate:如果FormView启用了分页的话,这个模板可以用于自定义分页的界面。EditItemTemplate/Insert
29、ItemTemplate:如果FormView支持编辑或插入功能,那么这两种模板可以用于自定义相关的界面。6.3.3 DetailsView控件DetailsView控件与FormView控件在很多情况下非常类似,DetailsView控件通常情况下也只能够显示一行的数据,同FormView,DetailsView控件支持对数据源控件中的数据进行插入、删除和更新。但是DetailsView控件与FormView控件不同的是,DetailsView控件不支持ItemTemplate模板,这也就是说,DetailsView控件是以一种表格的形式所呈现的。相比之下,DetailsView控件能够支持
30、Ajax,因为FormView控件完全由模板驱动,但是FormView控件对验证控件的支持较好。而DetailsView控件可以通过选择是否包括更新、删除等操作,而无需手动添加相应的事件,比FormView控件更加方便。6.3.3 DetailsView控件开发人员还可以配置PagerSettings属性允许自定义DetailsView控件生成分页用户界面的外观,它将呈现向前和向后导航的方向控件,PagerSettings属性的常用模式有以下几种。 NextPrevious:以前一个,下一个形式显示。 NextPreviousFirstLast:以前一个,下一个,最前一个,最后一个形式显示。
31、Numeric:以数字形式显示。 NumericFirstLast:以数字,最前一个,最后一个形式显示。6.3.4 Repeater和DataList控件Repeater控件和DataList控件其数据绑定意义与GridView类似,可以实现相同的功能,但是它们与GridView控件相比更加灵活,它们支持自定义的HTML代码,也就是说在GridView控件中,数据是通过固定的模板来呈现的,而Repeater控件和DataList控件可以允许开发人员在其模板中自定义不同的HTML代码来呈现。6.3.4 Repeater和DataList控件Repeater控件Repeater控件能够通过模板显示
32、一个数据源的内容,这些模板非常灵活,开发人员可以轻松地进行配置,Repeater并非从WebControl派生而来,在它内部可以自定义HTML代码或样式来编辑模板和控制属性。在Repeater控件中,可以运用以下5种模板来显示相应的界面信息。 AlternatingItemTemplate:指定如何显示其他选项。 ItemTemplate:指定如何显示选项。 HeaderTemplate:指定如何显示标题。 FooterTemplate:指定如何显示页脚。 SeparatorTemplate:指定如何显示不同选项之间的分隔符。6.3.4 Repeater和DataList控件DataList控
33、件DataList控件的常用样式属性如下。 AltermatingItemStyle:编写交替行的样式。 EditItemStyle:正在编辑项的样式。 FooterStyle:列表结尾处脚注的样式。 HeaderStyle:列表头部标题的样式。 ItemStyle:单个项的样式。 SelectedItemStyle:选定项的样式。 SeparatorStyle:各项之间分隔符的样式。6.3.5 ListView控件ListView控件支持的模板如下。AlternatingItemTemplate:交替项目模板,用不同的标记显示交替的项目,便于查看者区别连续不断的项目。EditItemTemp
34、late:编辑项目模板,控制编辑时的项目显示。EmptyDataTemplate:空数据模板,控制ListView数据源返回空数据时的显示。EmptyItemTemplate:空项目模板,控制空项目的显示。GroupSeparatorTemplate:组分隔模板,控制项目组内容的显示。GroupTemplate:组模板,为内容指定一个容器对象,如一个表行、div或span组件。InsertItemTemplate:插入项目模板,用户插入项目时为其指定内容。ItemSeparatorTemplate:项目分隔模板,控制项目之间内容的显示。ItemTemplate:项目模板,控制项目内容的显示。L
35、ayoutTemplate:布局模板,定义容器对象的根组件,如一个table、div或span组件,它们包装ItemTemplate或GroupTemplate定义的内容。SelectedItemTemplate:已选择项目模板,指定当前选中项目内容的显示。6.4 LINQ每一种数据域有它自己的访问方法。当查询一个数据库时,你很自然地就用SQL,当你访问XML数据时,很自然地就用DOM或者XQuery。然而现在的数据格式越来越多,数据库、XML、数组、哈希表每一种都有自己操作数据的方式,学起来费事费力。最终的结果是,在访问不同的数据源时就有了不同的编程模型。于是,就有了LINQ诞生的理由以一种
36、统一的方式操作各种数据源,减少数据访问的复杂性。LINQ编程语言的一种新特性,能够将数据查询语句集成到编程语言中。目前,LINQ支持的语言有C#和VB。6.4.1 LINQ概述LINQ是Language Integrated Query(语言集成查询)的简称,它是集成在.NET编程语言中的一种特性,这使得查询表达式可以得到很好的编译时语法检查,丰富的元数据,智能感知等强类型语言的好处。LINQ是VS2008和.NET Framework 3.5版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁。LINQ支持的不仅有SQL Server数据库,还有XML文档、ADO.NET数据集、.
37、NET集合、文件、字符串等。6.4.1 LINQ概述LINQ的基本构架6.4.1 LINQ概述LINQ包括5个部分,即LINQ to Objects、LINQ to DataSet、LINQ to SQL、LINQ to Entities和LINQ to XML。在.NET开发中最常用的是LINQ to SQL和LINQ to XML。LINQ to SQL提供了对SQL Server中数据库的访问和整合功能,同时能够以对象的形式进行数据库管理,前面已经提到,现在的数据库依旧以关系型数据库为主,在面向对象开发过程中,很难通过对象的方法描述数据库,而LINQ提供了通过对象的形式对数据库进行描述。
38、6.4.2 LINQ语法基础LINQ查询语句能够将复杂的查询应用简化成一个简单的查询语句,LINQ在写法上和SQL语句十分相似,但是它们还是有一定区别的,就以查询论坛表tbBoard和表tbClass中的数据来说,SQL查询语句如下。select * from className,boardName where classId=boardClassId/SQL查询语句上述代码是SQL查询语句,对于LINQ而言,其查询语句格式如下。var sql = from cl in lq.tbClass from bd in lq.tbBoard where cl.classId=bd.boardClas
39、sId select cl;LINQ的基本格式如下。var = from in where orderby 6.4.2 LINQ语法基础from查询子句from子句是LINQ查询语句中最基本的子句关键字。与SQL查询语句不同的是,from关键字必须是LINQ查询语句的开始。(1)from查询子句基础:后面跟随着项目名称和数据源,示例代码如下。var lingsql = from lq in str select lq; (2)from查询子句嵌套查询:在SQL语句中,为了实现某一功能,往往需要包含多个条件以及包含多个SQL子句嵌套。var lingsql = from lq in str fr
40、om m in str2 select lq;6.4.2 LINQ语法基础where条件子句在SQL查询语句中可以使用where子句进行数据的筛选,在LINQ中同样包括where子句进行数据源中数据的筛选。where子句指定了筛选的条件,这也就是说在where子句中的代码段必须返回布尔值才能够进行数据源的筛选,示例代码如下。var linqstr = from l in MyList where l.Length 5 select l;/编写where子句6.4.2 LINQ语法基础select选择子句select子句同from子句一样,是LINQ查询语句中必不可少的关键字,select子句在
41、LINQ查询语句中是必须的,示例代码如下。var linqstr = from lq in str select lq; /编写选择子句6.4.3 LINQ查询基础在应用隐式类型局部变量时要注意以下几点。 只能存在于方法内部。 不是一个新的类型,只是一个关键字,或者叫做一个占位符,在C#编译器编译后它就会被确定的类型所替代。 其类型在编译时根据上下文推断出来,因此所有一切不能被编译器推断出来的用法都是错误的。例如,var nullValue=null;这种写法是错误的,它是一个不确定的类型;当然也不能这样使用:var I=5; I=abc;此时编译器根据第一个赋值会推断出它是一个整型,但是随后
42、又将一个字符串赋值给它。6.4.4 LINQ to SQLLINQ to SQL(或者叫DLINQ)全称为LINQ to Microsoft SQL Server,是LINQ(.NET语言集成查询)的一部分,是.NET Framework 3.5的一个组件,提供了用于将关系数据作为对象管理的运行时的基础结构,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和LINQ to XML、LINQ to Objects、LINQ to Dataset、LINQ to Entities等组成了强大的LINQ。6.4.4 LINQ to SQL在LINQ to SQL 中,关系数据库的数据模型映射到
43、用开发人员所用的编程语言表示的对象模型。当应用程序运行时,LINQ to SQL会将对象模型中的语言集成查询转换为SQL,然后将它们发送到数据库进行执行。当数据库返回结果时,LINQ to SQL会将它们转换回可以用您自己的编程语言处理的对象。6.4.5 LINQ to XMLLINQ to XML是LINQ技术中针对XML文档的操作类型,提供了多种、简单的类来实现对XML的操作。LINQ to XML可以操作不同类型DOM模型中的XML类库,相当于将这些类库封装到一起,从而使开发人员不必去考虑不同DOM模型中的XML类库,就可以实现编程操作,大大减轻了程序员的工作量,对于提高开发效率,缩短开发周期具有重要的意义。6.4.5 LINQ to XMLLINQ to XML中提供准查询操作符就像树形操作符一样来查询XML数据,简化了对XML数据的使用,不必使用额外的语言语法像XPath或XQuery。开发人员可以通过LINQ to XML对文件系统、远程Web service、内存中的XML内容中获得的XML执行LINQ查询。
限制150内