收藏 分享(赏)

第2章 LINQ数据模型.pptx

上传人:bubibi 文档编号:18786237 上传时间:2023-11-01 格式:PPTX 页数:22 大小:484.43KB
下载 相关 举报
第2章 LINQ数据模型.pptx_第1页
第1页 / 共22页
第2章 LINQ数据模型.pptx_第2页
第2页 / 共22页
第2章 LINQ数据模型.pptx_第3页
第3页 / 共22页
第2章 LINQ数据模型.pptx_第4页
第4页 / 共22页
第2章 LINQ数据模型.pptx_第5页
第5页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、ASP.NET MVCASP.NET MVC网站设计教程网站设计教程第第2 2章章 LINQ LINQ数据模型数据模型2LINQ(Language Integrated Query)语言集成查询是.NET Framework 3.5中的新特性,作为一组专门用于C#和Visual Basic语言的扩展功能,LINQ提供了一种统一且对称的方式。可以使用C#或者Visual Basic编写类似SQL的表达式实现与多种数据的交互,可以在广义的数据上获取和操作数据。LINQ作为一组语言特性和API,可以使用统一的方式编写查询命令,检索并保存来自不同数据源的数据,从而实现程序设计语言和数据库之间的匹配,为

2、不同类型的数据源提供统一的查询接口。LINQ主要由LINQ to Objects、LINQ to XML、ADO.NETLINQ等几部分组成,基本架构如图2.1所示。34在LINQ中可以使用相同的查询语法来查询和转换XML、对象集合、SQL数据库、ADO.NET数据集以及其他多种格式的数据对象,LINQ使用中具有如下优点。(1)熟悉的语言。无需复杂的学习即可上手,不必为每种类型的数据源或数据格式学习新的语言。(2)更少的编码。相比较传统的方式LINQ减少了编写的代码量,编写更少代码即可创建完整应用。(3)可读性强。能够大幅减少过程控制语句,大幅提高代码的可读性和可维护性,可更加轻松地理解和维护

3、。(4)标准化的查询方式。可以使用相同的LINQ语法查询多个数据源,无需更多的编程技巧即可合并数据源。(5)有效的类型检查。具有编译类型检查,提高了开发的时效性和准确性。(6)方便的智能提示。提供了通用集合的智能感知提示。52.2.1 隐式类型var隐式类型var是从Visual C#3.0开始的一种新技术,可以在方法内声明变量。如果程序设计时无法确定变量的类型,就可以使用var类型。var可代替C#中任何类型,编译器会根据上下文来判断该变量的类型。使用var定义变量既具有object定义的便捷性,又具强类型定义的效率。var类型定义变量的语法如下。var 变量名=初始值;6自动属性(Auto

4、-Implemented Properties)是Visual C#5.0之后新增的语法。与java语言在类的内部中使用GetXXX()和SetXXX()方法进行数据的读取不同,微软官方的规范中推荐使用C#中的公有属性来封装私有数据字段,通过属性实现数据的读取。如果某一属性的set和get访问器中没有任何逻辑处理,只是单纯的封装字段,就可以使用自动实现的属性。自动属性的定义类似于字段,除了数据类型以外,只需再声明其具有的访问器即可。其封装的私有化字段不需要单独声明,编译器会自动创建。创建自动属性语法结构如下。class 类名public 数据类型属性1get;set;/可读写属性public

5、数据类型属性2get;private set;/只读属性public 数据类型属性3private get;set;/只读属性7对象和集合初始化器(Object and Collection Initializers)是Visual C#3.0之后新增的语法,在创建对象时可以通过对象初始化器实现属性的初始化。与类中构造函数的先声明后调用不同,初始化器不需要声明,可以在构造函数体内直接为对象或集合中的成员赋值。对象和集合初始化器的语法结构如下。类名 对象=new 类名()属性1=属性值1,属性1=属性值2,属性1=属性值3,.;8扩展方法(Extension Method)是Visual C#3

6、.0语言中新增的一个与LINQ密切相关的功能,通过扩展方法可以轻而易举地为某个框架或第三方库中的某个类型增加辅助功能。前期版本对于.NET程序集中已编译的类型,开发者是不能直接修改的。如果需要为某个类型添加、修改、删除成员,唯一办法就是重新修改类型定义的代码。而扩展方法允许在不修改定义的情况下向已有类型中添加方法,这种“添加”无需为原始类型创建新的派生类型、也无需对原始类型重新编译。创建和调用扩展方法的基本步骤如下。(1)创建一个静态类;(2)在该静态类中创建一个静态方法;(3)为该静态方法添加至少一个参数,在第一个参数类型之前加上this关键字,该方法将成为第一个参数所属类型的扩展方法;(4

7、)使用类型的对象直接调用该扩展方法。9Lambda表达式(Lambda Expression)是一个匿名函数,即没有函数名的函数。基于数学中的运算得名,直接对应于其中的lambda抽象(Lambda Abstraction)。Lambda表达式的引入与委托类型的使用密切相关的,本质上Lambda表达式就是用更简单的方式来书写匿名方法,从而简化.NET委托类型的使用。C#中的Lambda表达式使用 Lambda运算符“=”表示,该运算符读为“goes to”,运算符将表达式分为两部分,左边是输入的参数,右边是表达式的主体。Lambda表达式的语法结构如下。(参数列表)=表达式或者语句块101.参

8、数的约束参数的约束如果参数列表中只有一个未显式声明类型的参数,可直接书写。如果参数列表包含0个或者两个及两个以上参数,则参数必须使用括号括起来,示例如下。x=x+1/单个参数可省略()(intx)=x+1/显式声明类型,需用()括起来(x,y)=x*y/多个参数,需用()括起来()=Console.WriteLine()/没有参数,需用()括起来2.返回值的约束返回值的约束如果“语句或语句块”有返回值,并且包含两条或两条以上语句时,必须以return语句作为结尾;如果只有一条语句,则可直接书写表达式省略return语句,示例如下。x=x+1 /只有一条语句,直接写表达式x=returnx+1;

9、/只有一条语句,可以写返回值(intx,int y)=x+;y+=2;return x+y;/多条语句,写返回值输出112.3.1实体数据库的建立表3.1 student表字段名字段名字段描述字段描述数据类型数据类型主键主键约束约束sno学号int是 sname姓名varchar(20)not nullsex性别char(3)age年龄uint dept部门varchar(20)表3.2 course表字段名字段名字段描述字段描述数据类型数据类型主键主键约束约束cno课程号int是 cname课程名varchar(20)tname教师姓名varchar(20)not nullcredit学分u

10、int not null表3.3 sc表字段名字段名字段描述字段描述数据类型数据类型主键主键约束约束sno学号int是外键cno课程号int 外键grade成绩int not null12LINQ to SQL是LINQ中的一个数据库访问的应用框架,作为一种针对SQL Server数据库是集成查询语言。LINQ to SQL以对象形式管理关系数据,提供了丰富的查询功能。能够使对Microsoft SQL Server的访问代码变得简洁,改变传统的手工书写代码、运行时报错误、回头差错修改SQL语句的开发流程改变,通过系统辅助生成查询语句,只要代码编译通过就能生成正确的SQL语句。LINQ to

11、SQL有查询表达式语法(Query Expression)和方法语法(Fluent Syntax)两种语法可供选择。131.查询表达式语法查询表达式语法是一种接近于SQL语法的查询方式,LINQ to SQL查询表达式语法如下。var 结果集=from c in 数据源where 过滤表达式 orderby 排序select c注:(1)查询表达式语法与SQL语法相同。(2)查询表达式必须以from子句开头,以select或groupby子句结束。(3)可以使用过滤、连接、分组、排序等运算符进行筛选操作,构造查找结果。(4)可以用隐式var类型变量保存查询的结果。142.查询方法语法方法语法也

12、称为流利语法,利用System.Linq.Enumerable类中定义的扩展方法和Lambda表达式进行查询,类似于调用类的扩展方法,语法结构如下。IEnumerabl query=数据源集合.Where(bool类型的过滤表达式).OrderBy(排序条件).Select(选择条件)153.查询表达式语法与方法语法比较查询表达式语法与方法语法存在着紧密的关系,比较如下。(1)CLR本身并不理解查询表达式语法,其只理解方法语法。(2)编译器负责在编译时将查询表达式语法翻译为方法语法。(3)大部分方法语法都有与之对应的查询表达式语法形式:如Select()对应select、OrderBy()对应

13、orderby等。(4)有部分查询方法在C#中目前还没有对应的查询语句,如Count()和Max()等,此时需要使用查询表达式语法和方法语法的混合方式进行替代。16【例2-9】创建控制台应用程序,使用LINQ创建模型,使用LINQ查询语句和基于Lambda表达式查询方法分别实现按年龄进行学生姓名查询。17【例2-10】创建控制台应用程序,使用LINQ创建模型,使用Lambda表达式分别实现学生信息的插入操作。18【例2-11】创建控制台应用程序,使用LINQ创建模型,使用Lambda表达式分别实现学生信息的修改操作。19【例2-12】创建控制台应用程序,使用LINQ创建模型,使用基于Lambda表达式的查询方法实现学生信息的删除操作。20本章主要介绍了LINQ的基本特征及优点;对于LINQ使用中的预备知识隐形类型var,自动类型,集合初始化器,扩展方法,Lambda表达式等进行了详细讲解;对于LINQ to SQL语法进行了详细讲解,通过示例重点对于SQL语句、LINQ to SQL查询语句和基于Lambda表达式的查询方法进行了比较;对于LINQ to SQL在查询、插入、修改、删除的应用进行了示例讲解。21?答答 疑疑 时时 间间22谢谢 谢谢 大大 家家 的的 光光 临临!

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

当前位置:首页 > 金融行业

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报