ASP.NET开发大全第20章.ASP.NET 3.5与LINQ.doc
《ASP.NET开发大全第20章.ASP.NET 3.5与LINQ.doc》由会员分享,可在线阅读,更多相关《ASP.NET开发大全第20章.ASP.NET 3.5与LINQ.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第20章 ASP.NET 3.5与LINQ对于长期发展的面向对象编程模型而言,其发展基本处于一个比较稳定的阶段,可是面向对象的编程模型并没有解决数据的访问和整合的复杂问题。对于数据库的访问和XML的访问,面向对象方法论无法从根本意义上解决其复杂度和难度,而LINQ提供了一种更好的解决方案。20.1 什么是LINQ任何技术都不可能凭空搭建起来,为了解决工业生产生中某个实际问题,当现有的技术已经无法很好的完成工业的要求,就会促发新技术的诞生。LINQ就是为了解决复杂的数据访问和整合而出现的一种新技术。20.1.1 LINQ起源从传统的意义上来说,面向过程的编程模型在数据访问和整合的能力上有一定的限
2、度。因为面向过程的编程方法不能很好的描述一个事务,必须通过不同函数之间的调用来描述一个现有的对象,而且面向过程的编程方法在代码复用性上比较低,所以当面向过程的编程语言需要对数据库进行访问时,就需要编写大量的额外代码。虽然面向过程的编程模型可以通过良好的函数引用和编码提高复用性,但是并没有解决面向过程编程模型中对数据的访问和整合的复杂度。随着计算机和编程模型的发展,人们发现了另一个更好的编程模型,这就是现在最常用的面向对象编程模型。相比面向过程的编程模型而言,面向对象的编程模型能够更好的描述一个事务,事务能够通过面向对象中的属性、字段和方法很好的模拟实际的事务,而面向对象编程模型中的派生、继承等
3、特性同样能够极大的提高代码的复用性,提升开发效率。但是面向对象的编程模型同样没有解决复杂的数据库访问和数据整合,开发人员还是需要通过繁琐的手段进行数据库的访问和数据整合。在.NET 3.0框架或更早,LINQ就已经被提及,LINQ是一种能够快速对大部分数据源进行访问和数据整合的一种技术,LINQ解决了复杂的数据应用中开发人员需要面对和解决的问题。虽然面向对象的数据库已经在几年前就被提及并且各大IT公司投入了对面向对象的数据库的研发,但是传统的关系型数据库在当今还是应用最为广泛的。关系型数据库中将数据整合和呈现成为一张张的表的形式,开发人员和数据库管理人员能够通过SQL管理工具提供的SQL语句进
4、行数据的查询和整理。但是在开发过程中,开发人员不能够像使用SQL语句一样对数据集进行查询和处理。任何数据库中的数据都会以一种数据集的形式反馈给用户,这种数据集的形式可以反映成为数学中的集合的概念,其实在数据库早期的发展中,数据是以集合的概念呈现的,而随着数据库的发展,集合的概念依旧是数据库最基本的概念。正式因为如此,开发人员不能够方便的是从一个集合中查询数据,这里不仅仅是一个数据库,还包括其他能够以数据库形式存在的文件,例如ACCESS、TXT等,当在开发中需要使用到多个数据库或者数据描述形式的文件时,更多的情况是将这些数据填充到数据集中并通过遍历来访问数据,这样却造成了更多的数据访问问题和麻
5、烦。LINQ能够很方便的进行数据的查询,使用LINQ对数据集进行查询的形式很像使用SQL语句对数据库中的表进行查询,而与之不同的是,LINQ能够面向更多的对象,这些对象包括数组、集合以及数据库,LINQ对数组的查询示例代码如下所示。 static void Main(string args) string str = 你好,今天的,天气真不错,生活很阳光;/创建数组 var s = from n in str select n;/编写查询字串 foreach (var n in s)/遍历查询对象 Console.WriteLine(n.ToString();/输出对象值 Console.Re
6、adKey();/等待用户按键 上述代码对数组str进行了查询,这种方式很像SQL语句。的确LINQ的查询方式和SQL语句很像,其语法和基本内容都没有什么太大的差别,但是LINQ提供了更好的查询的解决方案。LINQ能够查询更多对象(例如上述代码中的数组)而无法使用SQL语句进行查询。另外,LINQ查询语句还能够使用WHERE等关键字进行查询,示例代码如下所示。 static void Main(string args) string str = 你好,今天的,天气真不错,生活很阳光;/创建数组 var s = from n in str where n.Length 3 select n;/使
7、用条件查询 foreach (var n in s)/遍历查询对象 Console.WriteLine(n.ToString();/输出对象值 Console.ReadKey();/等待用户按键 上述代码修改了LINQ查询语句,为LINQ查询语句增加了条件查询,该条件的意义为查询字符串长度大于3的字符串,运行后如图20-1所示。图20-1 LINQ查询语句从上图可以看出,能够使用类似于SQL语句的形式进行数据集的查询,很大程度上方便了开发人员对于数据库中数据的访问和整理。LINQ可以使用条件语句进行筛选,并且能够使用.NET提供的语法进行判断,这样就简化了开发人员对于数据集中的数据的筛选。有关
8、LINQ的语句,会在后面的章节中详细的讲解。20.1.2 LINQ构架在.NET 3.5中,LINQ(Language Integrated Query)已经成为了编程语言的一部分,开发人员已经能够使用Visual Studio 2008创建使用LINQ的应用程序。LINQ对基于.NET平台的编程语言提供了标准的查询操作。在.NET 3.5中,LINQ的基本构架如图20-2所示。图20-2 LINQ基本构架如图20-2所示,LINQ能够对不同的对象进行查询。在.NET 3.5中,微软提供了不同的命名空间以支持不同的数据库配合LINQ进行数据查询。在LINQ框架中,处于最上方的就是LINQ应用程
9、序,LINQ应用程序基于.NET框架而存在的,LINQ能够支持C#、VB等.NET平台下的宿主语言进行LINQ查询。在LINQ框架中,还包括Linq Enabled ADO.NET层,该层提供了LINQ查询操作并能够提供数据访问和整合功能。LINQ包括五个部分,这五个部分分别是LINQ to Objects、LINQ to DataSet、LINQ to SQL、LINQ to Entities、LINQ to XML,在.NET开发中最常用的是LINQ to SQL和LINQ to XML,本书也详细介绍LINQ的这两个部分。LINQ to SQL提供了对SQL Server中数据库的访问和
10、整合功能,同时能够以对象的形式进行数据库管理,前面已经提到,现在的数据库依旧以关系型数据库为主,在面向对象开发过程中,很难通过对象的方法描述数据库,而LINQ提供了通过对象的形式对数据库进行描述。LINQ to XML提供了对XML中数据集的访问和整合功能,LINQ to XML使用System.Xml.Linq命名控件,为XML操作提供了高效易用的方法。20.1.3 LINQ与Visual Studio 2008 新特性讲到LINQ就不得不讲解Visual Studio 2008的新特性,LINQ作为Visual Studio 2008中的一部分,Visual Studio 2008为LIN
11、Q提供很好的编程环境,LINQ也使用到了C#编程语言中的很多特性,以提高开发人员的开发效率。q Visual Studio 2008重定向:使用Visual Studio 2008与Visual Studio 2005不同的是,Visual Studio 2008支持多个版本.NET框架的共存,在Visual Studio 2008中可以选择基于.NET 2.0或.NET 3.X版本的框架来开发不同的应用程序,当选择不同的应用程序基础框架时,Visual Studio 2008能够智能的提供不同的命名空间。q Visual Studio 2008 AJAX:在ASP.NET 2.0开发中,需要
12、使用ASP.NET AJAX 1.0作为AJAX开发必备的工具,在Visual Studio 2008中已经集成了对AJAX的支持,创建ASP.NET 3.5应用程序已经能够非常方便的使用AJAX功能。q Visual Studio 2008 可视化操作:在Visual Studio 2008中,微软提供了可视化操作,开发人员能够选择不同的视图进行页面分离形式的开发,在Visual Studio 2008中开发人员可以选择视图,拆分,代码三种视图进行不同的开发体验。q Visual Studio 2008集成LINQ:这是Visual Studio 2008中比较值得期待的功能,Visual
13、Studio 2008将LINQ作为编程语言中的一部分,为开发人员提供了LINQ开发的原生环境。在LINQ与Visual Studio 2008中,开发人员最为期待的新特性还是Visual Studio 2008对LINQ的原生支持,使用LINQ能够快速的进行数据库的访问和整合,这样在一定的意义上降低了开发难度,LINQ在.NET Framework 3.5中的位置如图20-3所示。图20-3 .NET框架中的LINQ正如图20-3所示,.NET 2.0后面几个版本的框架都是基于.NET Framework 2.0而存在的,在.NET Framework 3.0中,微软已经增加了WPF,WCF
14、,WF等新特性以提供快速的面向服务的开发和完善的用户体验解决方案。而LINQ是作为.NET Framework 3.5存在于.NET Framework中的,这也就是说只有在.NET Framework 3.5框架中才能够使用LINQ技术。由于.NET Framework 3.5版本的框架基于.NET Framework 3.0版本,开发人员可以使用LINQ特性进行分布式开发和面向服务的开发,这样就能够更近一步的提高代码的复用性和安全性。20.2 LINQ与Web应用程序在ASP.NET应用程序开发中,常常需要涉及到数据的显式和整合,使用ASP.NET 2.0中提供的控件能够编写用户控件,开发
15、人员还能够选择开发自定义控件进行数据显示和整合,但是在数据显示和整合过程中,开发人员往往需要大量的连接、关闭连接等操作,而且传统的方法也破坏了面向对象的特性,使用LINQ能够方便的使用面向对象的方法进行数据库操作。20.2.1 创建使用LINQ的Web应用程序创建LINQ的Web应用程序非常的容易,只要创建Web应用程序时选择的平台是基于.NET Framework 3.5的就能够创建使用LINQ的Web应用程序,如图20-4所示。图20-4 选择.NET Framework 3.5当创建一个基于系统.NET Framework 3.5的应用程序,系统就能够自动为应用程序创建LINQ所需要的命
16、名空间,示例代码如下所示。using System.Xml.Linq;/使用LINQ命名空间using System.Linq; /使用LINQ命名空间上述命名空间提供了应用程序中使用LINQ所需要的基础类和枚举,在ASP.NET应用程序中就能够使用LINQ查询语句进行查询,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) string str = 我爱C#, 我喜欢C#, 我做C#开发, 基于.NET平台, LINQ应用 ;/数据集 var s = from n in str where n.Contains(C#)
17、 select n;/执行LINQ查询 foreach (var t in s)/遍历对象 Response.Write(t.ToString() + );/输出查询结果 上述代码在ASP.NET页面中执行了一段LINQ查询,查询字符串中包含“C#”的字符串,运行后如图20-5所示。图20-5 ASP.NET执行LINQ查询在ASP.NET中能够使用LINQ进行数据集的查询,Visual Studio 2008已经将LINQ整合成为编程语言中的一部分,基于.NET Framework 3.5的应用程序都可以使用LINQ特性进行数据访问和整合。20.2.2 基本的LINQ数据查询使用LINQ能够
18、对数据集进行查询,在ASP.NET中,可以创建一个新的LINQ数据库进行数据集查询,右击现有项目,单击【添加新项】选项,选择【LINQ to SQL类】选项,如图20-6所示。图20-6 创建LINQ to SQL类创建一个LINQ to SQL类,能够映射一个数据库,实现数据对象的创建,如图20-7所示。创建一个LINQ to SQL类后,可以直接在服务资源管理器中拖动相应的表到LINQ to SQL类文件中,如图20-8所示。 图20-7 服务资源管理器 图20-8 拖动一个表开发人员能够直接将服务资源管理器中的表拖动到LINQ to SQL类中,在LINQ to SQL类文件中就会呈现一
19、个表的视图。在视图中,开发人员能够在视图中添加属性和关联,并且能够在LINQ to SQL类文件中可以设置多个表,进行可视化关联操作。创建一个LINQ to SQL类文件后,LINQ to SQL类就将数据进行对象化,这里的对象化就是以面向对象的思想针对一个数据集建立一个相应的类,开发人员能够使用LINQ to SQL创建的类进行数据库查询和整合操作,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) MyDataDataContext data = new MyDataDataContext();/使用LINQ类 va
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP.NET开发大全第20章.ASP.NET 3.5与LINQ ASP NET 开发 大全 20 3.5 LINQ
限制150内