使用LINQ技术操作数据库
更新时间:2023-09-30 20:47:01 阅读量: 综合文库 文档下载
- linq 操作数据库推荐度:
- 相关推荐
ASP.NET应用程序开发技术
学习单元5 使用LINQ技术操作数据库
在安装VS2008的时候,宣传广告中不断地显示VS2008的新特性,其中重点就有LINQ。VS作为一个全球有影响力的开发软件,自VS2008开始就把目光重点投给LINQ,这一定有它的地位和意义。
在第三学习单元和第四学习单元的学习中我们掌握了用数据源控件和ADO.NET技术操作数据库,实现了对数据库数据的编辑。虽然数据源控件以及传统的ADO.NET提供了大量的读取、查询、检索和编辑数据库中数据的方法,然而,有时这些方法显得比较繁琐。开发人员需要编程查询或操作数据库的每个步骤,如获取连接字符串、创建数据库的连接对象、打开数据的连接、执行查询或操作数据库的命令等。
LINQ引入了标准的、易于学习的查询和更新数据的模式,可以对其技术进行扩展以支持几乎任何类型的数据存储,这使得它在对象领域和数据领域之间建立了一座桥梁。图5-1给出了LINQ框架的基本架构,LINQ主要由3部分组成:LINQ to ADO.NET 、LINQ to Objects和LINQ to XML。其中LINQ to ADO.NET又分成为了两个组成部分:LINQ to SQL和LINQ to DataSet。本学习单元将通过LINQ to SQL来认识LINQ技术,其它组成部分读者可以借助其它资料进行学习。
C# VB 其它 .NET语言集成查询(LINQ) 支持LINQ的数据源 Linq to Object Linq to DataSet Linq to SQL Linq to XML LINQ to ADO.NET 对象 数据库 XML 图5-1 LINQ基本架构
5.1 任务1:使用LINQ to SQL操作数据库
5.1.1 任务场景
“588乐购网”为了向广大顾客更好地展示商品,决定在网站中添加商品展示板块。同时,为编辑这些商品信息则必须在网站的后台添加数据处理的页面。
商品展示模块的功能是通过图文并茂的方式展示商品的品名、型号、参数和图片等信
第 1页
ASP.NET应用程序开发技术
息。如图5-2所示的“588乐购网”的首页,在页面的左侧显示商品品牌导航条,右侧则显示最新上架商品的图片缩略图及其品名和价格,点击商品的图片,则按图5-3所示的界面显示商品的详细信息。
图5-2 网站首页
图5-3 商品详细信息页面
网站的后台数据管理也是一个网站必不可少的内容。在后台数据管理页面中可以进行包括用户信息、商品信息和订单信息等等内容的处理。如图5-4商品信息添加模块的页面。
第2页
ASP.NET应用程序开发技术
图5-4 添加手机页面
5.1.2 学习引导
在.NET Framework 3.5的众多新特性中,LINQ to SQL是最重要的一个,它的出现意味着自SQL诞生以来,应用程序与数据库的结合方式上最重要的一次变革。开发人员可以使用LINQ to SQL对数据库中的数据进行查询、更新、插入和删除等操作。目前,可以对Microsoft SQL Server 2000/2005(包括使用Express版)使用LINQ to SQL。其他数据库,如Oracle、DB2和Access等,目前还没有得到支持,但也许将来会得到支持。
LINQ to SQL最重要的就是为关系数据库创建一个对象模型,然后将该对象模型映射到SQL Server数据库中的相应的对象(如表、列、存储过程等)。例如,如果LINQ to SQL映射到数据库中的表,则这些LINQ to SQL类称为“实体类”。该类中的属性分别映射到数据库中的相应的列。
在理解了映射关系的基础上,接下来就是如何实现这种映射关系。这里必不可少的就是掌握LINQ查询语句,它实现了对数据库数据的查询和修改。当然,被查询的数据也可以是XML(LINQ to XML)和对象(LINQ to Objects)。
5.1.3相关知识与技术
一. LINQ查询表达式语法基础
C# 3.0在C# 1.0和 C# 2.0的基础上引入了新的语言机制,如隐型局部变量、对象初始化程序、查询表达式和Lambda表达式等。这些新的机制为LINQ提供了语法支持。
接下来,我们通过一个简单的例子来理解LINQ查询表达式语法。尽管LINQ不仅可用来访问关系数据库,而且也能访问数据集或XML等数据类型,但这里为了理解LINQ查询表达式,我们用一个SQL语句访问数据库来比较说明。
下面的SQL语句是基于NorthWind数据库用来查询没有住在Berlin的顾客的名单: SELECT c.CompanyName, c.ContactName, c.City FROM Customers c WHERE c.City != 'Berlin'
第 3页
ASP.NET应用程序开发技术
ORDER BY c.ContactName
现在来看看用LINQ表达式做同样的事情,解剖并理解清除其中的细节,有两种查询语法:查询表达式和方法查询。目前,暂时先考虑查询表达式,下面的查询表达式将从GetCustomers()返回的IEnumerable类型结果,找出那些没有居住在Berlin的顾客。
var customerNotInBerlin = from c in GetCustomers() where c.City != \ orderby c.ContactName select c;
表5-1概述了LINQ一些常用的表达式:
表5-1 LINQ查询表达式子句列表
操作符 var <变量> = from <项目> in <数据源> where select group join orderby, ascending, descending 意义 使用类型推理来赋值 从一个<数据源>中取出一个子集作为一个<项目> 从数据源中取出一个子集的约束条件 指定查询结果的类型和表现形式. 对查询结果进行分组 选择多个数据源进行关联查询 对查询结果进行排序,可以是“升序”、“降序” LINQ查询表达式必须以from子句开头,并且必须以select 或group子句结束。在第一个from子句和最后一个select或group子句之间,查询表达式可以包含一个或多个where、orderby、group、join,甚至from子句。
1. from、where和select查询子句
LINQ查询表达式必须包含from子句,而且要以from子句开头,嵌套查询其子查询表达式也必须以from开头。from子句指定查询操作的数据源和范围变量。where子句指定筛选元素的逻辑条件,一个查询表达式可以不包含where子句,也可以包含1个或多个where子句。select子句指定了查询结果的类型和表现形式。LINQ查询表达式要么以select子句结束,要么以group子句结束。
下面的实例说明了一个简单的查询操作。代码使用GetMobiles( )方法获得Mobile表的内容。之后,使用一个LINQ查询表达式(利用了from、where和select关键字)获得where筛选后的数据集作为GridView1的数据源。
private void ShowData ( ) {
var mobiles = GetMobiles(); var query=from m in mobiles where m.MbID<5 select query
第4页
ASP.NET应用程序开发技术
GridView1.DataSource= query; GridView1.DataBind();
} 注意,from子句指定的数据源的类型必须是IEnumerable(可枚举)、IEnumerable
在下面的例子中,我们不是简单的选择query,而是明确定义字段的名称,定义一个新的投射,指定在结果集中的对象。例如,要给MbID和MbName指定更明确的名称,以完整地描述他们的内容。
private void ShowData ( ) {
var mobiles = GetMobiles(); var query=from m in mobiles
select new {mobileid = m.MbID , mobilename = m.MbName}; GridView1.DataSource= query; GridView1.DataBind(); } 2. group子句
group子句对查询结果进行分组,并返回元素类型为IGrouping
下面的例子中,使用group关键字按类型组合Mobile类别数据,关键字into提供了一个临时标识符,充当group子句的结果的引用。另外,因为group操作不会导致任何结果,所以查询仍使用前面讨论的技术创建一个定制的查询投射。
private void ShowData ( ) {
var mobiles = GetMobiles (); var query = from m in mobiles
group m by m.MbTypeID into g
select new{手机类型标记=g.Key, 数量=g.Count() }; GridView1.DataSource= query; GridView1.DataBind(); }
3. orderby 子句
orderby 子句可以多查询结果进行排序。排序的方式可以是“升序”或“降序”,默认的排序方式为“升序”。
private void ShowData ( ) {
第 5页
正在阅读:
使用LINQ技术操作数据库09-30
生化题库106-07
建筑废弃物资源化试点工程项目可行性研究报告 - 图文06-28
一句关心的话语滋润了我的心田作文800字07-14
动物学思考题10-17
上海市崇明区2016-2017学年八年级上学期期末考试物理试题09-19
上市公司执行企业会计准则监管问题解答(2011年第1期,总第5期)09-03
湖南大学2008届毕业生就业信息统计表04-30
实验五 内存操作数及寻址方法12-17
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 操作
- 数据库
- 使用
- 技术
- LINQ
- X-Z煤矿停、送电管理规定
- 马基习题
- 60t压缩天然气爆炸计算
- 热力机械工作票“三种人”资格考试题答案
- 消防案例分析(1) - 图文
- 上海造币厂中国古典园林系列纪念章赏析 - 图文
- 医院加强医疗卫生行风建设“九不准”实施方案
- 最新外研版小学英语六年级上册第五模块试题
- 水土保持工程造价编制讲义
- 日界线与时间计算练习题1
- 财务成本管理(2013年)第十八章 本量利分析 课后作业(下载版)
- 新疆大学创新学分认定实施细则(试行)1
- 地质地貌考试必须试题及答案
- 2019九年级化学上册 第4章 生命之源—水 4.4 化学方程式教案2(新版)粤教版
- 1草原
- 大学物理A第八章 电磁感应
- 严蔚敏数据结构各章习题及答案
- 《小组互助学习的探索与实践》课题结题报告
- 大学物理(下)练习题
- 中考数学一轮复习第五章图形的变换与尺规作图第2节平移和旋转试题