第12章LINQ to SQL数据库操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Distinct()等。
12.3 对象关系模型与O/R设计器
12.3.1 了解对象关系模型 1. 对象模型的原理 下图所示的是LINQ to SQL对象模型的原理,从图中可以看到 LINQ to SQL包含两个重要的组件,对象模型(Object Model)和 运行时接口(Runtime)。前者为开发人员提供容易理解的基于编 程语言的对象访问模式和开发接口,后者为对象模型和数据库管理 系统提供映射功能。
12.4 使用LINQ to SQL操作数据库
12.4.4 删除记录 使用LINQ to SQL技术删除数据库记录的操作与更新记录十分 相似。在创建了DataContext类和数据表实体对象后,首先需要查 询到希望修改的记录,而后调用数据表实体对象的 DeleteOnSubmit()方法,最后调用DataContext类对象的 SubmitChanges()方法即可。
12.4 使用LINQ to SQL操作数据库
12.4.5 使用LINQ to SQL直接执行SQL语句 1. GetCommand()方法 GetCommand()方法用于提供有关由LINQ to SQL生成的SQL命令 的信息。使用该方法可以帮助程序员了解LINQ to SQL在后台具体 的执行情况,这对程序查错是很有帮助的。 2. ExecuteCommand()方法 DataContext类提供的ExecuteCommand()方法可用于直接对数 据库执行一个没有返回值的SQL命令。注意,在书写SQL语句时表名 称、字段名需要用方括号“[]”将其括起来。 3. ExecuteQuery()方法 DataContext类提供的ExecuteQuery()方法用于直接执行一个SQL查 询,该方法返回一个IEnumerable<T>类型的泛型集合。
1) 创建DataContext类和数据表实体类,这一步一般可通过 O/R设计器来完成。有关LINQ to SQL的其他操作这一步也是必须的, 今后不再赘述。 2) 实例化DataContext类。 3) 使用LINQ to SQL查询语句或方法返回查询结果集。 4) 输出查询结果。
12.4 使用LINQ to SQL操作数据库
12.1 LINQ的概念
12.1.2 与LINQ相关的几个概念 2. 匿名类型 “匿名类型”也称为“隐式类型”或“推断类型”,如果在程序中 需要使用到临时类型,而又不希望去创建相应的类时,可以考虑使 用匿名类型。 匿名类型使用var关键字进行声明,例如: //使用对象初始化器直接初始化匿名类型对象 var stu = new {StuName = "zhangsan", StuAge = 20};
12.3 对象关系模型与O/R设计器
12.3.2 使用O/R设计器 在Visual Studio 2008及以上版本中,LINQ to SQL的所有功 能都需要通过一个名为“DataContext”的类来实现,而O/R设计器 就是专门用于创建使用LINQ to SQL所必须的DataContext类的一个 工具。 当我们向Windows应用程序项目中添加一个“LINQ to SQL类” 时,系统将自动打开O/R设计器,只需要将数据表、存储过程等从 服务器资源管理器中拖动到O/R设计器中即可自动创建DataContext 类。
12.4.2 插入新记录 使用LINQ to SQL向数据表中插入一条记录的方法十分简单, 在创建了DatLeabharlann BaiduContext类和数据表实体对象后,只要创建一个数据 表对象的实例,并为该实例的各个字段赋值,最后调用数据表对象 的InsertOnSubmit()方法将数据表对象实例添加到表,最后再调用 DataContext类对象的SubmitChanges()更新数据库即可。
12.2 使用LINQ查询
12.2.1 使用LINQ查询表达式 1. 最基本的LINQ查询表达式 所谓最基本的LINQ查询表达式是指表达式中仅包含一个from子 句和一个select子句。其语法格式为: from 变量 in 数据源 select 表达式;
from子句使用“变量”逐个读取“数据源”的各元素,而“表 达式”用来对from子句中的“变量”进行某种计算以得到返回结果。 2. 使用where子句指定过滤条件
12.3 对象关系模型与O/R设计器
12.3.1 了解对象关系模型 2. 对象模型的创建方法 通常,开发人员可以通过以下3种方式创建LINQ to SQL对象模 型。 1) 使用对象关系设计器(O/R设计器):最适合中小型数据库 应用程序开发。 2) 使用SQL Metal代码生成工具:SQL Metal代码生成工具是 一个使用的命令行工具,它的功能与O/R设计器的功能基本相同, 但SQL Metal更加灵活。由于SQL Metal是一个命令行工具,没有图 形化的操作界面,使用起来不是很方便。 3) 代码编辑器:开发人员可以在Visual Studio代码编辑窗口 或其他代码编辑器中直接编写对象模型的代码。一般用来修改O/R 设计器或SQL Metal生成的对象模型代码。
在不使用对象初始化器时,为对象的属性赋值需用如下所示的语句: Students stu = new Students();stu.Name = "zhangsan"; stu.Age = 20;
若使用对象初始化器,则可在初始化对象时直接为对象的属性赋值:
Students stu = new Students() {StuName = "zhangsan", StuAge = 20}; 在使用对象初始化器时,语句中的小括号可以省略: Students stu = new Students {StuName = "zhangsan", StuAge = 20};
[, 形参2]……)
{ 扩展方法的方法体语句} }
12.1 LINQ的概念
12.1.2 与LINQ相关的几个概念 4. Lambda表达式 Lambda表达式是.NET Framework 3.5的一个新特性,它提供了 一种极为简洁的定义方法的方式。Lambda表达式是从“委托”和 “匿名方法”过渡而来的。 (1) 委托 (2) 匿名方法 (3) 过渡到Lambda表达式
12.1 LINQ的概念
12.1.2 与LINQ相关的几个概念 3. 扩展方法 使用扩展方法可以为一些现有的类增加某种特定的功能。也就 是向一个现有的类中添加新的静态方法(注意必须是静态的)。创 建扩展方法的语法格式如下所示: public static class 静态类名称 { public static 返回值类型 方法名称(this 作用类型 形参1
对数据源中的数据进行过滤是常见的应用,也是查询的最基本 功能之一。在LINQ查询表达式中where子句的位置应在from子句之 后,在select子句之前。其语法格式为: from 变量 in 数据源 where 条件表达式 select 表达式;
12.2 使用LINQ查询
12.2.1 使用LINQ查询表达式 3. 使用orderby子句实现查询结果排序 对查询结果集中的元素进行排序是常见的辅助操作之一, orderby子句一般应放在where子句之后(如果有的话),放在 select子句之前。使用orderby子句实现结果集排序的语法格式为: from 变量 in 数据源 select 表达式; orderby 排序表达式 [排序方式]
12.3 对象关系模型与O/R设计器
12.3.3 了解DBML文件 下图所示的是将StuInfo表添加到O/R设计器后,使用Windows“记事 本”程序打开DBML文件时看到的内容。
12.4 使用LINQ to SQL操作数据库
12.4.1 查询数据库记录 在使用LINQ to SQL进行数据库操作前,必须保证已正确的创 建了DataContext类和数据表实体类(如本例由O/R设计器生成的 DataClassesDataContext类和StuInfo类)。 使用LINQ to SQL进行查询的基本操作步骤如下:
其中:“排序表达式”是针对from子句中变量的表达式,可以 就是变量本身或对变量进行运算的表达式。
12.2 使用LINQ查询
12.2.2 使用LINQ方法 使用前面介绍过的LINQ查询表达式进行查询时,由于表达式语 法上的限制一些复杂的查询很难实现。为解决这一问题LINQ还提供 了一套通过使用C#代码编写的方法进行查询的方式。 1. 使用Where()方法 2. 使用Single()和SingleOrDefault()方法 3. 其它常用方法 Average()、Min()、Max()、Sum()、Skip(n)、SkipWhile(条件)
12.4 使用LINQ to SQL操作数据库
12.4.3 修改记录 使用LINQ to SQL技术修改数据库记录的操作与添加新记录十 分相似。在创建了DataContext类和数据表实体对象后,首先需要 查询到希望修改的记录,而后为查询结果对象中的各个字段赋以新 值,最后调用DataContext类对象的SubmitChanges()方法即可。
第12章 LINQ to SQL数据库操作
本章讲述的主要内容
12.1 LINQ的概念
12.2
12.3
使用LINQ查询
对象关系模型与O/R设计器
12.4
使用LINQ to SQL操作数据库
12.1 LINQ的概念
12.1.1 LINQ的构成
12.1 LINQ的概念
12.1.2 与LINQ相关的几个概念 1. 对象初始化器
Lambda表达式的基本形式为:
(参数列表) => {表达式或语句块}; 【演练12-2】
12.2 使用LINQ查询
12.2.1 使用LINQ查询表达式 每个查询关键字对应一个LINQ查询子句,各子句都具有明确的 功能,将这些子句组合到一起就构成了一个完整且具有特定功能的 的LINQ查询。常用的LINQ查询子句及其功能说明见表12-1。