使用LINQ技术操作数据库doc.docx

上传人:b****6 文档编号:16155754 上传时间:2023-07-10 格式:DOCX 页数:18 大小:28.01KB
下载 相关 举报
使用LINQ技术操作数据库doc.docx_第1页
第1页 / 共18页
使用LINQ技术操作数据库doc.docx_第2页
第2页 / 共18页
使用LINQ技术操作数据库doc.docx_第3页
第3页 / 共18页
使用LINQ技术操作数据库doc.docx_第4页
第4页 / 共18页
使用LINQ技术操作数据库doc.docx_第5页
第5页 / 共18页
使用LINQ技术操作数据库doc.docx_第6页
第6页 / 共18页
使用LINQ技术操作数据库doc.docx_第7页
第7页 / 共18页
使用LINQ技术操作数据库doc.docx_第8页
第8页 / 共18页
使用LINQ技术操作数据库doc.docx_第9页
第9页 / 共18页
使用LINQ技术操作数据库doc.docx_第10页
第10页 / 共18页
使用LINQ技术操作数据库doc.docx_第11页
第11页 / 共18页
使用LINQ技术操作数据库doc.docx_第12页
第12页 / 共18页
使用LINQ技术操作数据库doc.docx_第13页
第13页 / 共18页
使用LINQ技术操作数据库doc.docx_第14页
第14页 / 共18页
使用LINQ技术操作数据库doc.docx_第15页
第15页 / 共18页
使用LINQ技术操作数据库doc.docx_第16页
第16页 / 共18页
使用LINQ技术操作数据库doc.docx_第17页
第17页 / 共18页
使用LINQ技术操作数据库doc.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

使用LINQ技术操作数据库doc.docx

《使用LINQ技术操作数据库doc.docx》由会员分享,可在线阅读,更多相关《使用LINQ技术操作数据库doc.docx(18页珍藏版)》请在冰点文库上搜索。

使用LINQ技术操作数据库doc.docx

使用LINQ技术操作数据库doc

使用LINQ技术操作数据库

学习单元5使用LINQ技术操作数据库在安装VS2008的时候,宣传广告中不断地显示VS2008的新特性,其中重点就有LINQ。

VS作为一个全球有影响力的开发软件,自VS2008开始就把目光重点投给LINQ,这一定有它的地位和意义。

在第三学习单元和第四学习单元的学习中我们掌握了用数据源控件和ADO.NET技术操作数据库,实现了对数据库数据的编辑。

虽然数据源控件以及传统的ADO.NET提供了大量的读取、查询、检索和编辑数据库中数据的方法,然而,有时这些方法显得比较繁琐。

开发人员需要编程查询或操作数据库的每个步骤,如获取连接字符串、创建数据库的连接对象、打开数据的连接、执行查询或操作数据库的命令等。

LINQ引入了标准的、易于学习的查询和更新数据的模式,可以对其技术进行扩展以支持几乎任何类型的数据存储,这使得它在对象领域和数据领域之间建立了一座桥梁。

图5-1给出了LINQ框架的基本架构,LINQ主要由3部分组成LINQtoADO.NET、LINQtoObjects和LINQtoXML。

其中LINQtoADO.NET又分成为了两个组成部分LINQtoSQL和LINQtoDataSet。

本学习单元将通过LINQtoSQL来认识LINQ技术,其它组成部分读者可以借助其它资料进行学习。

CVB.NET语言集成查询(LINQ)LinqtoObjectLinqtoXML支持LINQ的数据源LINQtoADO.NET对象数据库XMLLinqtoDataSetLinqtoSQL图5-1LINQ基本架构其它5.1任务1使用LINQtoSQL操作数据库5.1.1任务场景“588乐购网”为了向广大顾客更好地展示商品,决定在网站中添加商品展示板块。

同时,为编辑这些商品信息则必须在网站的后台添加数据处理的页面。

商品展示模块的功能是通过图文并茂的方式展示商品的品名、型号、参数和图片等信息。

如图5-2所示的“588乐购网”的首页,在页面的左侧显示商品品牌导航条,右侧则显示最新上架商品的图片缩略图及其品名和价格,点击商品的图片,则按图5-3所示的界面显示商品的详细信息。

图5-2网站首页图5-3商品详细信息页面网站的后台数据管理也是一个网站必不可少的内容。

在后台数据管理页面中可以进行包括用户信息、商品信息和订单信息等等内容的处理。

如图5-4商品信息添加模块的页面。

图5-4添加手机页面5.1.2学习引导在.NETFramework3.5的众多新特性中,LINQtoSQL是最重要的一个,它的出现意味着自SQL诞生以来,应用程序与数据库的结合方式上最重要的一次变革。

开发人员可以使用LINQtoSQL对数据库中的数据进行查询、更新、插入和删除等操作。

目前,可以对MicrosoftSQLServer2000/2005(包括使用Express版)使用LINQtoSQL。

其他数据库,如Oracle、DB2和Access等,目前还没有得到支持,但也许将来会得到支持。

LINQtoSQL最重要的就是为关系数据库创建一个对象模型,然后将该对象模型映射到SQLServer数据库中的相应的对象(如表、列、存储过程等)。

例如,如果LINQtoSQL映射到数据库中的表,则这些LINQtoSQL类称为“实体类”。

该类中的属性分别映射到数据库中的相应的列。

在理解了映射关系的基础上,接下来就是如何实现这种映射关系。

这里必不可少的就是掌握LINQ查询语句,它实现了对数据库数据的查询和修改。

当然,被查询的数据也可以是XML(LINQtoXML)和对象(LINQtoObjects)。

5.1.3相关知识与技术一.LINQ查询表达式语法基础C3.0在C1.0和C2.0的基础上引入了新的语言机制,如隐型局部变量、对象初始化程序、查询表达式和Lambda表达式等。

这些新的机制为LINQ提供了语法支持。

接下来,我们通过一个简单的例子来理解LINQ查询表达式语法。

尽管LINQ不仅可用来访问关系数据库,而且也能访问数据集或XML等数据类型,但这里为了理解LINQ查询表达式,我们用一个SQL语句访问数据库来比较说明。

下面的SQL语句是基于NorthWind数据库用来查询没有住在Berlin的顾客的名单SELECTc.CompanyName,c.ContactName,c.CityFROMCustomerscWHEREc.CityBerlinORDERBYc.ContactName现在来看看用LINQ表达式做同样的事情,解剖并理解清除其中的细节,有两种查询语法查询表达式和方法查询。

目前,暂时先考虑查询表达式,下面的查询表达式将从GetCustomers返回的IEnumerable类型结果,找出那些没有居住在Berlin的顾客。

varcustomerNotInBerlinfromcinGetCustomerswherec.City“Berlin“orderbyc.ContactNameselectc;表5-1概述了LINQ一些常用的表达式表5-1LINQ查询表达式子句列表操作符意义var使用类型推理来赋值fromin从一个中取出一个子集作为一个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的数据源。

privatevoidShowData{varmobilesGetMobiles;varqueryfromminmobileswherem.MbID或前两者的派生类型。

在下面的例子中,我们不是简单的选择query,而是明确定义字段的名称,定义一个新的投射,指定在结果集中的对象。

例如,要给MbID和MbName指定更明确的名称,以完整地描述他们的内容。

privatevoidShowData{varmobilesGetMobiles;varqueryfromminmobilesselectnew{mobileidm.MbID,mobilenamem.MbName};GridView1.DataSourcequery;GridView1.DataBind;}2.group子句group子句对查询结果进行分组,并返回元素类型为IGrouping的对象序列。

下面的例子中,使用group关键字按类型组合Mobile类别数据,关键字into提供了一个临时标识符,充当group子句的结果的引用。

另外,因为group操作不会导致任何结果,所以查询仍使用前面讨论的技术创建一个定制的查询投射。

privatevoidShowData{varmobilesGetMobiles;varqueryfromminmobilesgroupmbym.MbTypeIDintogselectnew{手机类型标记g.Key,数量g.Count};GridView1.DataSourcequery;GridView1.DataBind;}3.orderby子句orderby子句可以多查询结果进行排序。

排序的方式可以是“升序”或“降序”,默认的排序方式为“升序”。

privatevoidShowData{varmobilesGetMobiles;varqueryfromminmobilesorderbym.MbIDdescendingselectnew{手机标记m.MbID,手机名称m.MbName};GridView1.DataSourcequery;GridView1.DataBind;}二.通过LINQ插入、更新和删除数据LINQtoSQL最重要的功能就是查询和操作SQLServer数据库中的数据。

通过它可以很容易的查询SQLServer数据库中的数据,而且也可以通过InsertOnSubmit、DeleteOnSubmit等方法实现对数据库的插入数据和删除数据等操作。

1.创建LINQtoSQL实体在VisualStudio中包含了一个基本的ObjectRelation映射器,它可以快速地为SQLServer数据库创建一个对象模型,并将这些对象模型映射到SQLServer数据库中相应的对象(如表、列、存储过程和函数等)。

SQLServer数据库中的表被映射为LINQtoSQL类,我们称为“实体类”;数据库中的列被映射为实体类中的属性或字段;存储过程或函数被映射为实体类中的方法。

LINQtoSQL对象模型和SQLServer数据中的对象的映射关系如表5-2所示。

表5-2不同数据提供程序对应的ADO.NET对象LINQtoSQL对象模型的基本元素SQLServer数据库中的对象实体类表属性(或字段)列关联外键关系方法存储过程或函数实体是描述数据库表(或视图)的类,通过它可以实现对数据库的操作,接下来我们来学习如何通过VisualStudio2008的ObjectRelationalDesigner创建实体类。

1创建DBML文件在【解决方案资源管理器】中右击解决方案名称,然后选择【添加新项】命令,如图5-5所示图5-5添加新项在弹出的【添加新项】对话框中选择【LINQtoSQL类】选项,并在【名称】对话框中输入类文件名,如图5-6所示图5-6添加实体类DataClasses.dbml左击【添加】按钮后,会出现如图5-7的对话框,选择【是】按钮,将LINQtoSQL类放在App_Code文件中图5-7是否将实体类添加入App_Code文件夹对话框选择【是】后,将在App_Code文件夹中生成一个DataClasses.dbml文件,并在IDE视图窗口中打开了这个文件。

如图5-8所示,I区是用来创建实体类的,II区是用来创建方法的。

图5-8实体类的IDE视图窗口2创建“数据上下文类”具体操作为在【服务器资源管理器】面板中选择DataBase数据库中的Mbtype表,然后将其拖放到图5-8的【I】区视图面板中,如图5-9。

保存DataClasses.dbml文件后,该文件将为Mbtype表创建一个名为Mbtype的类。

类的内容保存在DataClasses.designer.cs代码窗口中,如图5-10。

而以后没改变一次dbml文件中的内容,必须在重新保存一次.dbml文件,这时DataClasses.designer.cs中的内容也将更新。

图5-9拖放数据库表进对象关系设计器示意图图5-10数据上下文类的代码窗口3创建数据库的数据上下文方法如果开发人员需要使用数据库中的存储过程或函数,则需要把存储过程或函数也添加到DataClasses.dbml文件中。

具体操作为在【服务器资源管理器】面板中选择数据库中的存储过程或函数,并将它们拖放到DataClasses.dbml文件的视图面板图5-8【II】区中。

保存DataClasses.dbml文件之后,该文件将为每一个存储过程和函数创建一个相应的方法。

2.查询数据库中的数据使用LINQtoSQL可以轻松查询数据库中的数据,下面我们通过LINQtoSQL来查询DataBase数据库中的Mbtype表中的数据,并通过Repeater控件显示在页面中。

具体步骤如下1创建DataClassesDataContext类的实例db。

2使用LINQ查询表达式查询Mbtype表中的数据,并将查询的结果保存为result变量。

3把result变量作为Repeater控件rptData的数据源,并绑定该控件的数据来显示查询的结果。

privatevoidshowData{//创建DataBase数据库的上下文实例。

DataClassesDataContextdbnewDataClassesDataContextConfigurationManager.ConnectionStrings[“MG_mobileConnectionString“].ConnectionString;varresultfrompindb.Mbtypeselectp;rptData.DataSourceresult;rptData.DataBind;}3.修改数据库中的数据具体步骤如下1使用LINQ查寻查找被修改的记录。

2赋予记录新的值。

3调用SubMitChanges()方法将上述修改提交到数据库,并完成修改操作。

privatevoidUpdateDataWithLINQ{///创建LinqDB数据库的数据上下文的实例tempDataContextdbnewtempDataContext;///查询被修改的数据varresultfromrindb.Mobilewherer.MbID2selectr;///修改数据foreachMobilerinresult{r.MbName“123“;}///将修改操作提交到数据库中db.SubmitChanges;}4.插入数据创建了DataContext类对象之后,就能够使用DataContext的方法进行数据插入、更新和删除操作。

相比ADO.NET,使用DataContext对象进行数据库操作更加方便和简单。

使用LINQtoSQL类进行数据插入的操作步骤如下。

1创建DataClassesDataContext类的实例db。

2声明实体类对象info,并设置其相应的属性值,为实体属性赋值。

3调用InsertOnSubmit()方法将实体类对象info添加到db实例的Mobile表中。

4调用SubmitChanges()方法将实体类中的数据添加到数据库中,实现修改数据的功能。

privatevoidAddDataWithLINQ{///创建LinqDB数据库的数据上下文的实例tempDataContextdbnewtempDataContext;MobilembnewMobile();//创建一个实体mb.MbName“apple”;db.Mobile.InsertOnSubmitmb;//添加到数据库中db.SubmitChanges;///将修改操作提交到数据库中}5.删除数据库中的数据使用LINQ能够快速的删除行,删除行的基本步骤如下1创建DataClassesDataContext类的实例db。

2使用LINQ查询将要删除的数据,将查询结果保存到result变量中。

3使用DeleteAllOnSubmit()方法删除result变量中的所有记录。

4调用SubmitChanges()方法将实体类中的数据添加到数据库中,实现修改数据的功能。

privatevoidDeleteDataWithLINQ{///创建LinqDB数据库的数据上下文的实例tempDataContextdbnewtempDataContext;//查询被删除的数据varresultfromrindb.Mobilewherer.MbID2selectr;//删除数据,并提交到数据库中db.Mobile.DeleteAllOnSubmitresult;///将修改操作提交到数据库中db.SubmitChanges;}5.1.4任务的设计与实现一.相关数据库设置与定义根据任务场景,该功能模块可设置保存商品信息的数据表Mobile和保存商品品牌的数据表mbtype,所在的数据库文件为Database.mdf。

mbtype和Mobile数据表定义分别如表5-3和表5-4所示。

表5-3mbtype数据表定义字段名数据定义允许为空字段描述TypeIDint否类别编号,主键MbTypeNamenvarchar50否类别名称MbTypePicnvarchar50否类别图片存放路径表5-4Mobile数据表表定义字段名数据定义允许为空字段描述MbIdint否商品编号,自动编号,主键MbNamenvarchar50否商品名称MbTypeIdint否类别编号Pricemoney否商品价格Picturenvarchar50否商品图片AddedTimedatetime否商品上架时间Stockint否商品库存二.功能的设计与实现1.设计前准备在VS2008中新建网站,并在站点App_Data目录下创建数据库Database.mdf,同时在该数据库中创建如表5-3和表5-4所示的数据表。

2.任务的功能设计根据学习任务学习场景描述,主要包含三个页面网站首页、商品详细信息页面和网站后台商品添加页面。

1网站首页将网站的首页分成上中下的结构,最新上架商品的信息放在中间区域。

2商品详细信息页面每一款商品详细信息展示包含一张商品图片、商品名称、商品编号、商品价格,并在该页面中添加购买按钮和购买数量。

3商品添加页面该页面主用用来提交一款商品的信息。

在提交信息之前能够预览该商品的缩略图。

3.任务的功能实现1首页模板页页面布局设计为使网站有一个统一的风格,在网站根目录下按上、中、下的网页布局创建一个模板页MasterPage.master,模板页布局如图5-11所示。

图5-11首页模板页布局模板页的页头区域包含了页面标题、网站LOGO、登录区、搜索区等;页脚区域包含了一些扩展链接。

模板页的左半部分为商品品牌导航区域,它采用商品品牌的缩略图来作导航按钮。

这里用一个名为dlistType的DataList控件来显示这些商品品牌数据,编辑dlistType控件模板,在其中放置一个名为ibtType的ImageButton控件和一个名为lbTypeId的Label控件。

显示商品品牌导航的DataList控件及其子控件相关属性设置如表5-5所示。

表5-5显示商品品牌导航的DataList控件及其子控件相关属性设置dlistTypeDataList控件,绑定到Mbtype数据表,以便其ItemTemplate视图子控件ibtType显示商品品牌缩略图,子控件lbTypeId绑定品牌Id。

子控件功能属性绑定表达式续表5-5iimagebtnTypeImageButton控件,用于显示商品缩略图导航按钮,通过查询字符串将当前商品品牌的MbTypeID传递到目标页面ProductList.aspxImageUrlEval“MbTypePic“CommandNameimagebuttonlbTypeIdLabel控件,主要用于获取商品品牌的ID,可作为按类别显示手机信息时的条件。

TextEval“TypeId“Visiblefalse导航实现获取数据库中mbtype表作为控件dlistType的数据源。

这需要在网站中新建一个LINQtoSQL实体类DataClasses.dbml,并将mbtype表拖进IDE窗口后保存该dbml文件。

给dlistType控件指定数据源。

在MasterPage.master.cs文件中添加获取数据源的方法ShowLeftType。

publicvoidShowLeftType{DataClassesDataContextdcnewDataClassesDataContext;varresultsfromtindc.mbtypeselectt;dlistType.DataSourceresults;dlistType.DataBind;}2网站首页网站首页应直观地给顾客以网上商品琳琅满目的感觉以及浏览方便。

还应让顾客知道网站最新的信息,特色的商品信息推荐。

因此,在本学习任务中,我们设计了在网站的首页中显示最新上架的商品信息,这些信息通过图文并茂的方式来展现。

最新上架信息显示设计最新上架商品信息的显示也借助DataList控件来显示。

在网站首页Default.aspx(属于模板页MasterPage.master的内容页)中添加名为dlistLatest的DataList控件。

编辑dlistLatest模板,在ItemTemplate模板中添加能显示每一款商品缩略图、商品名和价格等信息的控件。

商品缩略图设计成一个名为imagebtn的ImageButton控件,它可以作为显示商品详细信息的页面导航按钮;商品名和价格分别用名为lbName和lbPrice的Label控件来显示。

ItemTemplate模板的布局如图5-12所示图5-12商品展示模板布局显示最新上架商品信息的DataList控件及其子控件相关属性设置如表5-6所示。

表5-6显示最新上架商品信息DataList控件及其子控件相关属性设置dlistLatestDataList控件,绑定到Mobile数据表,以便其ItemTemplate视图子控件imagebtn显示商品缩略图,子控件lbName绑定商品名,子控件lbPrice绑定商品价格。

子控件功能属性绑定表达式imagebtnImageButton控件,用于显示商品缩略图导航按钮,通过查询字符串将当前商品品牌的MbTypeID传递到目标页面ProductList.aspxImageUrlEval“Picture“PostBackUrlEval“MbId“,“/MobileDetails.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2