欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第7章数据访问课件.ppt

    • 资源ID:2109490       资源大小:336.51KB        全文页数:112页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第7章数据访问课件.ppt

    第7章 数据访问,1,第7章 数据访问 1,本章要点:,掌握Visual Studio 2008中管理数据库的方法熟练使用数据源控件掌握LINQ查询表达式熟练使用LINQ to SQL和LINQ to XML进行数据访问管理,2,本章要点:掌握Visual Studio 2008中管理数据,目录,7.1 数据访问概述7.2 建立SQL Server Express数据库7.3 数据源控件7.3.1 SqlDataSource控件7.3.2 XmlDataSource控件7.3.3 SiteMapDataSource控件7.3.4 LinqDataSource控件,3,目录7.1 数据访问概述3,目录,7.4 使用LINQ实现数据访问7.4.1 LINQ查询表达式7.4.2 LINQ to SQL概述7.4.3 LINQ to SQL查询数据7.4.4 使用LINQ to SQL管理数据7.4.5 LINQ to XML概述7.4.6 使用LINQ to XML管理XML文档7.5 小结,4,目录7.4 使用LINQ实现数据访问4,7.1 数据访问概述,ASP.NET 1.X主要使用ADO.NET访问数据。ADO.NET提供了用于完成如数据库连接、查询数据、插入数据、更新数据和删除数据等操作的对象。Connection对象Command对象DataReader对象DataAdapter对象DataSet对象,5,7.1 数据访问概述 ASP.NET 1.X主要使用ADO,ADO.NET两种读取数据库的方式,Connection、Command和DataReader对象:只能读取数据库。如果只是想查询记录的话,这种方式的效率更高些。Connection、Command、DataAdapter和DataSet对象:可以对数据库进行各种操作。,6,ADO.NET两种读取数据库的方式 Connection、C,ASP.NET 2.0增加了多种数据源控件和数据绑定控件,数据源控件封装所有获取和处理数据的功能,主要包括连接数据源、使用Select、Update、Delete和Insert等SQL语句获取和管理数据等。数据绑定控件主要用于以多种方式显示数据。结合使用数据源控件和数据绑定控件,只需要设置相关属性,几乎不用编写任何代码即能存取数据库。,7,ASP.NET 2.0增加了多种数据源控件和数据绑定控件 数,ASP.NET 3.5引入了一种新技术LINQ,填补了传统.NET语言和查询语句之间的空白,使得查询等数据访问操作完全与.NET语言整合,实现了通过.NET语言访问数据库的功能。未来数据访问的趋势。,8,ASP.NET 3.5引入了一种新技术LINQ 填补了传统.,7.2 建立SQL Server Express数据库,SQL Server Express 2005是SQL Server 2005系列中的精简版,允许无偿获取并免费再分发,同时对系统配置的要求相对比较低,非常适合于中小型企业的开发应用。SQL Server Express 2005与ASP.NET 3.5紧密集成。在安装Visual Studio 2008时,与ASP.NET 3.5一同安装。,9,7.2 建立SQL Server Express数据库 S,7.2 建立SQL Server Express数据库(续),允许建立网站时直接在Visual Studio 2008的开发环境中创建并管理数据库。在ASP.NET 3.5的用户认证和个性化的服务中,会自动创建SQL Server Express 2005的数据库ASPNETDB.MDF,并能与网站配合,自动保存相关数据,从而简化了设计过程。,10,7.2 建立SQL Server Express数据库(续,7.2 建立SQL Server Express数据库(续),利用图形管理工具SSMSE管理SQL Server Express数据库。利用Visual Studio 2008 中“服务器资源管理器”管理 SQL Server Express数据库。,11,7.2 建立SQL Server Express数据库(续,7.3 数据源控件,用于实现从不同数据源获取数据的功能。,12,7.3 数据源控件 用于实现从不同数据源获取数据的功能。1,7.3 数据源控件(续),提供了统一的基本编程模型。通过数据源控件中定义的各种事件,可以实现Select、Update、Delete和Insert等数据操作。提供了数据操作前后的事件。如:实现数据插入操作的Insert()方法。发生在数据插入之前的Inserting事件。发生在数据插入之后的Inserted事件。,13,7.3 数据源控件(续)提供了统一的基本编程模型。13,7.3.1 SqlDataSource控件,用来访问Access、SQL Server、SQL Server Express、Oracle、ODBC数据源和OLEDB数据源。要访问带密码的Access数据库,就不能使用AccessDataSource,只能使用SqlDataSource控件。,14,7.3.1 SqlDataSource控件用来访问Acce,SqlDataSource常用属性表,15,SqlDataSource常用属性表 ConnectionS,SqlDataSource常用属性表(续),16,SqlDataSource常用属性表(续)EnableCac,SqlDataSource常用属性表(续),17,SqlDataSource常用属性表(续)SelectCom,连接数据库,使用SqlDataSource连接数据源不需要编写代码,只需按“配置数据源”向导逐步设置就可以了。,18,连接数据库 使用SqlDataSource连接数据源不需要编,“配置数据源”向导,19,“配置数据源”向导19,数据连接说明,下拉列表框会列出存储在App_Data文件夹中的数据库名和存储在web.config文件的配置节中的数据连接名。连接字符串包括数据库信息和身份验证信息。Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|MyPetShop.mdf;Integrated Security=True;User Instance=True,20,数据连接说明下拉列表框会列出存储在App_Data文件夹中的,数据连接说明(续),SQL Server数据库的身份验证:Windows验证、SQL Server验证和混合验证。Windows验证使用Windows用户帐号连接SQL Server,常用于局域网络。,21,数据连接说明(续)SQL Server数据库的身份验证:Wi,数据连接说明(续),SQL Server验证使用SQL Server的注册帐号连接SQL Server,常用于Internet环境。Data Source=.SQLEXPRESS;AttachDbFilename=E:BookMyPetShop.mdf;Persist Security Info=True;User ID=saa;Password=sdf1;Connect Timeout=30;User Instance=False混合验证的连接字符串可选择Windows验证格式或SQL Server验证格式。,22,数据连接说明(续)SQL Server验证使用SQL Ser,“配置数据源”向导(续),23,“配置数据源”向导(续)23,连接字符串存放位置说明,在SqlDataSource控件的定义中,24,连接字符串存放位置说明在SqlDataSource控件的定义,连接字符串存放位置说明(续),在web.config的配置节中,25,连接字符串存放位置说明(续)在web.config的con,连接字符串存放位置说明(续),SqlDataSource控件的定义 SelectCommand=SELECT DISTINCT CategoryId FROM Product,26,连接字符串存放位置说明(续)SqlDataSource控件的,“配置数据源”向导(续),27,“配置数据源”向导(续)27,“配置数据源”向导(续),28,“配置数据源”向导(续)28,连接字符串加密处理,利用命令行工具aspnet_regiis.exe为连接字符串加密。aspnet_regiis pef connectionStrings E:website 利用命令行工具aspnet_regiis.exe为连接字符串解密。aspnet_regiis pdf connectionStrings E:website,29,连接字符串加密处理 利用命令行工具aspnet_regiis,连接失败,连接数据库失败是程序开发中常有的情形。造成失败的原因有连接字符串设置错误、数据库服务未启动、网络问题等。此时,需要给用户适当的出错提示信息。,30,连接失败 连接数据库失败是程序开发中常有的情形。造成失败的原,实例7-1 连接失败的处理,当数据库连接正常时在下拉列表中填充“Category”表的“Name”字段信息。当数据库连接失败时返回出错信息。源程序:FailtureConn.aspx程序说明:当SqlDataSource控件执行Select命令之后,将触发Selected事件,并且抛出任何异常信息。因此,数据库连接失败的处理可在Selected事件中捕获异常,再显示出错信息并通知SqlDataSource控件已处理异常。,31,实例7-1 连接失败的处理当数据库连接正常时在下拉列表中填,SqlDataSource的参数绑定,在Select、Insert、Delete、Update等数据操作时允许使用参数。,32,SqlDataSource的参数绑定 在Select、Ins,SqlDataSource参数绑定的数据来源,ControlParameter:实现控件属性值与参数的绑定。FormParameter:实现表单域的值与参数的绑定。CookieParameter:实现Cookie对象值与参数的绑定。ProfileParameter:实现用户配置属性值与参数的绑定。QueryStringParameter:实现QueryString对象值与参数的绑定。SessionParameter:实现Session对象与参数的绑定。,33,SqlDataSource参数绑定的数据来源ControlP,实例7-2 实现SqlDataSource控件的参数绑定,当选择宠物类别后,列表框中将显示该类别的所有产品。源程序:SqlDSParameters.aspx 程序说明:本示例不用编写任何代码,所有操作都通过属性设置实现。,34,实例7-2 实现SqlDataSource控件的参数绑定,利用SqlDataSource设置的SQL语句管理数据,在数据源配置时除可设定Select语句外,还可组合Insert、Update和Delete语句。设定的Select语句在网页有数据显示时即被执行,不需要调用相应的方法执行,而设定的Insert、Update和Delete语句必须调用相应的方法才能被执行。例如,Insert语句的执行应调用SqlDataSource控件的Insert()方法。,35,利用SqlDataSource设置的SQL语句管理数据 在数,实例7-3 利用SqlDataSource插入数据,当输入“分类名”、“描述”等信息,单击“插入并显示”后,将把数据信息插入到Category表,然后在GridView中显示表中所有数据。源程序:SqlDSInsert.aspx 程序说明:单击按钮时将调用Insert()方法,从而执行SqlDataSource中设置的Insert语句,实现数据插入功能。然后再执行SqlDataSource中设置的Select语句,返回 Category表中所有数据并在GridView中显示出来。,36,实例7-3 利用SqlDataSource插入数据当输入“,在SqlDataSource中使用存储过程,使用存储过程,可以将数据库操作的各种SQL命令经过编译后直接存放到数据库端。各个应用程序只需利用简单的调用语句即可调用存储过程完成对数据库的各种操作。这样就大大提高了代码的重用度。,37,在SqlDataSource中使用存储过程 使用存储过程,可,实例7-4 在Visual Studio 2008中建立存储过程,存储过程要求实现的功能是向Category表中插入记录和查询所有记录。操作流程:在“服务器资源管理器”窗口中展开相应的数据库,右击“存储过程”“添加新存储过程”。源程序:CategoryInsert存储过程,38,实例7-4 在Visual Studio 2008中建立存,实例7-5 利用存储过程插入数据,本实例实现的功能与实例7-3相同,区别是单击“插入并显示”按钮后将调用存储过程CategoryInsert向Category表插入记录,再将Category表中所有记录信息通过GridView呈现出来。源程序:SqlDSProcedure.aspx,39,实例7-5 利用存储过程插入数据本实例实现的功能与实例7-,7.3.2 XmlDataSource控件,访问的是“层次化数据”,常用于连接和访问 XML数据源中的数据。属性DataFile:用于设置要绑定的XML文件名。对于能显示层次化数据的控件有TreeView、Menu等,只需设置这些控件的属性DataSourceID值,即能显示XMLDataSource中的XML数据。对GridView控件,需要利用.xsl文件将XML文件转化为“表格化数据”后才能正常显示。,40,7.3.2 XmlDataSource控件 访问的是“层次,实例7-6 在GridView中显示XML文件,源程序:books.xml源程序:books.xsl源程序:XmlDSGridView.aspx,41,实例7-6 在GridView中显示XML文件 源程序:b,7.3.3 SiteMapDataSource控件,用于访问 XML格式的网站地图文件Web.sitemap,再将数据源绑定到TreeView、SiteMapPath或Menu等控件即能显示网站地图文件内容。当与SiteMapPath控件绑定时,不需要声明SiteMapDataSource,系统会自动实现绑定。不需要设置连接数据源的属性。,42,7.3.3 SiteMapDataSource控件 用于访,7.3.4 LinqDataSource控件,利用LINQ访问数据库。在使用时,首先要建立数据源的上下文对象,该对象包含要查询的数据的基对象,实质是一个LINQ to SQL类文件。,43,7.3.4 LinqDataSource控件利用LINQ访,实例7-7 使用LinqDataSource和GridView显示表数据,表Category的数据显示利用了LinqDataSource和GridView。源程序:LinqDSGridView.aspx,44,实例7-7 使用LinqDataSource和GridVi,7.4 使用LINQ实现数据访问,LINQ集成于.NET Framework 3.5中,提供了统一的语法实现多种数据源的查询和管理。它与.NET支持的编程语言整合为一体,使得数据的查询和管理直接被嵌入在编程语言的代码中,这样,就能充分利用Visual Studio 2008的智能提示功能,并且编译器也能检查查询表达式中的语法错误。,45,7.4 使用LINQ实现数据访问 LINQ集成于.NET,7.4 使用LINQ实现数据访问(续),LINQ to Object:用于处理Array和List等集合类型数据;LINQ to SQL:用于处理SQL Server等关系数据库类型数据;LINQ to XML:用于处理XML类型数据;LINQ to DataSet:用于处理DataSet类型数据。,46,7.4 使用LINQ实现数据访问(续)LINQ to O,7.4.1 LINQ查询表达式,实现了如何访问操作数据,常使用关键字为var的隐形变量存放返回数据。这种var变量可以不明确地指定数据类型,但编译器能根据变量的表达式推断出该变量的类型。,47,7.4.1 LINQ查询表达式实现了如何访问操作数据,常使,LINQ查询基本子句,from子句:指定查询操作的数据源和范围变量。select子句:指定查询结果的类型和表现形式。where子句:指定筛选元素的逻辑条件。group子句:对查询结果进行分组。orderby子句:对查询结果进行排序。join子句:连接多个查询操作的数据源。let子句:引入用于存储查询表达式中的子表达式结果的范围变量。into子句:提供一个临时标识符,该标识符可以在join、group或select子句中被引用。,48,LINQ查询基本子句 from子句:指定查询操作的数据源和范,LINQ查询基本子句(续),查询表达式必须以from子句开始,以select或group子句结束,中间可以包含一个或多个from、where、orderby、group、join、let等子句。,49,LINQ查询基本子句(续)49,7.4.2 LINQ to SQL概述,为关系数据库提供了一个对象模型,即将关系数据库映射为类对象。开发人员将以操作对象的方式实现对数据的查询、修改、插入和删除等操作。,50,7.4.2 LINQ to SQL概述为关系数据库提供了一,DataContext是什么?,作用DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库。功能以日志形式记录DataContext生成的SQL执行SQL(包括查询和更新语句)创建和删除数据库DataContext是实体和数据库之间的桥梁。,51,DataContext是什么?作用51,数据库与对象间映射关系表,52,数据库与对象间映射关系表 SQL Server对象LINQ,7.4.2 LINQ to SQL概述(续),要建立SQL Server数据库与LINQ to SQL对象间的映射关系,在Visual Studio 2008环境可自动完成,当然也可自行建立。,53,7.4.2 LINQ to SQL概述(续)要建立SQL,7.4.2 LINQ to SQL概述(续),MyPetShop.dbml定义了MyPetShop数据库的架构。MyPetShop.dbml.layout定义了每个表在设计视图中的布局。MyPetShop.designer.cs定义了自动生成的类,包括:派生自DataContext类以MyPetShopDataContext为类名,与MyPetShop数据库对应的类;以MyPetShop数据库中各表的表名作为类名的各实体类。,54,7.4.2 LINQ to SQL概述(续)MyPetSh,7.4.2 LINQ to SQL概述(续),实体类通过TableAttribute类的属性Name描述与数据表的映射关系。Table(Name=dbo.Category)实体类的属性通过ColumnAttribute类映射到数据库表的属性。Column(Storage=_CategoryId,AutoSync=AutoSync.OnInsert,DbType=Int NOT NULL IDENTITY,IsPrimaryKey=true,IsDbGenerated=true),55,7.4.2 LINQ to SQL概述(续)实体类通过Ta,7.4.2 LINQ to SQL概述(续),通过AssociationAttribute类映射数据库表间的外键关系。/实体类Category中的定义Association(Name=Category_Product,Storage=_Product,OtherKey=CategoryId)/实体类Product中定义Association(Name=Category_Product,Storage=_Category,ThisKey=CategoryId,IsForeignKey=true),56,7.4.2 LINQ to SQL概述(续)通过Assoc,7.4.2 LINQ to SQL概述(续),存储过程通过FunctionAttribute类实现映射并使用ParameterAttribute类描述存储过程的参数和方法的参数。Function(Name=dbo.CategoryInsert)public int CategoryInsert(Parameter(Name=Name,DbType=VarChar(80)string name,Parameter(Name=Descn,DbType=VarChar(255)string descn),57,7.4.2 LINQ to SQL概述(续)存储过程通过F,7.4.3 LINQ to SQL查询数据,投影可采用select子句通过投影操作实现。投影后的结果将新生成一个对象,该对象通常是匿名的。,58,7.4.3 LINQ to SQL查询数据投影58,实例7-8 使用LINQ to SQL实现投影,本实例将创建包含ProductID、CategoryID、Name属性的匿名对象。源程序:LinqSqlQuery.aspx.cs中btnProject_Click()部分,59,实例7-8 使用LINQ to SQL实现投影本实例将创建,/建立MyPetShopDataContext对象实例dbMyPetShopDataContext db=new MyPetShopDataContext();protected void btnProject_Click(object sender,EventArgs e)var results=from r in db.Product select new r.ProductId,r.CategoryId,r.Name;GridView1.DataSource=results;GridView1.DataBind();,60,/建立MyPetShopDataContext对象实例db,选择,实现了记录的过滤,由where子句完成。实例7-9 利用LINQ to SQL实现选择源程序:LinqSqlQuery.aspx.cs中btnSelect_Click()部分,61,选择 实现了记录的过滤,由where子句完成。61,protected void btnSelect_Click(object sender,EventArgs e)var results=from r in db.Product where r.UnitCost 20 select r;GridView1.DataSource=results;GridView1.DataBind();,62,protected void btnSelect_Click,排序,实例7-10 利用LINQ to SQL实现排序本实例将使用orderby子句根据价格降序排列。源程序:LinqSqlQuery.aspx.cs中btnOrder_Click()部分,63,排序实例7-10 利用LINQ to SQL实现排序63,protected void btnOrder_Click(object sender,EventArgs e)var results=from r in db.Product orderby r.UnitCost descending select r;GridView1.DataSource=results;GridView1.DataBind();,64,protected void btnOrder_Click(,分组,使用groupby子句。与原始集合不同,分组后的结果集合将采用列表的列表形式。列表中的每个元素包括键值及根据该键值分组的元素列表。因此,要访问分组后的结果集合,必须使用嵌套的循环语句。外循环用于循环访问每个组,内循环用于循环访问每个组的元素列表。若要引用组操作的结果,可以使用into子句创建用于进一步查询的标识符。,65,分组使用groupby子句。65,分组(续),实例7-11 利用LINQ to SQL实现分组本实例根据CategoryID分组,并显示 CategoryID值为5的列表。源程序:LinqSqlQuery.aspx.cs中btnGroup_Click()部分,66,分组(续)实例7-11 利用LINQ to SQL实现分组,protected void btnGroup_Click(object sender,EventArgs e)/按CategoryId分组后结果存入results var results=from r in db.Product group r by r.CategoryId;foreach(var g in results)/获取键为5的列表数据 if(g.Key=5)var results2=from r in g select r;GridView1.DataSource=results2;GridView1.DataBind();,67,protected void btnGroup_Click(,聚合,主要涉及Count()、Max()、Min()、Average()等方法。当使用Max()、Min()、Average()等方法时,参数常使用Lambda表达式。“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。所有 Lambda 表达式都使用 Lambda 运算符=,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x=x*x 读作“x goes to x times x”。,68,聚合主要涉及Count()、Max()、Min()、Aver,Lambda表达式,(输入参数)=语句块其中“输入参数”可以为空、1个或多个。当输入参数个数为1时,可省略括号;“=”称为Lambda运算符,读作“goes to”;语句块反映了Lambda表达式的结果。当把Lambda表达式运用于Max()、Min()、Average()等聚合方法时,编译器会自动推断输入参数的数据类型。,69,Lambda表达式(输入参数)=语句块69,实例7-12 利用LINQ to SQL实现聚合函数操作,本实例根据CategoryID分组统计每组的个数、LastPrice的最大值、最小值和平均值。源程序:LinqSqlQuery.aspx.cs中btnPolymerize_Click()部分,70,实例7-12 利用LINQ to SQL实现聚合函数操作本,protected void btnPolymerize_Click(object sender,EventArgs e)var results=from r in db.Product group r by r.CategoryId into g select new Key=g.Key,Count=g.Count(),MaxPrice=g.Max(p=p.Price),MinPrice=g.Min(p=p.Price),AvgPrice=g.Average(p=p.Price);GridView1.DataSource=results;GridView1.DataBind();,71,protected void btnPolymerize_C,附加内容,Distinct()形式 说明:筛选字段中不相同的值。用于查询不重复的结果集。生成SQL语句为:SELECT DISTINCT City FROM Customersvar q=(from c in db.Customers select c.City).Distinct();语句描述:查询顾客覆盖的国家。,72,附加内容Distinct()形式72,Count()形式 说明:返回集合中的元素个数,返回INT类型。生成SQL语句为:SELECT COUNT(*)FROM 1.简单形式:得到数据库中客户的数量var q=db.Customers.Count();2.带条件形式:得到数据库中未断货产品的数量var q=db.Products.Count(p=!p.Discontinued);,73,Count()形式73,LongCount()形式 说明:返回集合中的元素个数,返回LONG类型。对于元素个数较多的集合可视情况可以选用LongCount来统计元素个数,它返回long类型,比较精确。生成SQL语句为:SELECT COUNT_BIG(*)FROM var q=db.Customers.LongCount();,74,LongCount()形式74,Sum()形式 说明:返回集合中数值类型元素之和,集合应为INT类型集合。生成SQL语句为:SELECT SUM()FROM 1.简单形式:得到所有订单的总运费var q=db.Orders.Select(o=o.Freight).Sum();2.映射形式:得到所有产品的订货总数var q=db.Products.Sum(p=p.UnitsOnOrder);,75,Sum()形式75,Min()形式说明:返回集合中元素的最小值。生成SQL语句为:SELECT MIN()FROM 1.简单形式:查找任意产品的最低单价var q=db.Products.Select(p=p.UnitPrice).Min();2.映射形式:查找任意订单的最低运费:var q=db.Orders.Min(o=o.Freight);3.元素:查找每个类别中单价最低的产品:var categories=from p in db.Products group p by p.CategoryID into g select new CategoryID=g.Key,CheapestProducts=from p2 in g where p2.UnitPrice=g.Min(p3=p3.UnitPrice)select p2;,76,Min()形式76,Max()形式说明:返回集合中元素的最大值;不延迟。生成SQL语句为:SELECT MAX()FROM1.简单形式:查找任意雇员的最近雇用日期var q=db.Employees.Select(e=e.HireDate).Max();2.映射形式:查找任意产品的最大库存量var q=db.Products.Max(p=p.UnitsInStock);3.元素:查找每个类别中单价最高的产品var categories=from p in db.Products group p by p.CategoryID into g select new g.Key,MostExpensiveProducts=from p2 in g where p2.UnitPrice=g.Max(p3=p3.UnitPrice)select p2;,77,Max()形式77,Average()形式说明:返回集合中的数值类型元素的平均值。集合应为数字类型集合,其返回值类型为double。生成SQL语句为:SELECT AVG()FROM1.简单形式:得到所有订单的平均运费var q=db.Orders.Select(o=o.Freight).Average();2.映射形式:得到所有产品的平均单价var q=db.Products.Average(p=p.UnitPrice);3.元素:查找每个类别中单价高于该类别平均单价的产品var categories=from p in db.Products group p by p.CategoryID into g select new g.Key,ExpensiveProducts=from p2 in g where p2.UnitPrice g.Average(p3=p3.UnitPrice)select p2;,78,Average()形式78,连接,多表连接查询使用join子句。但对于具有外键约束的多表,可以直接通过引用对象的形式进行查询,当然也可以使用join子句实现。,79,连接 多表连接查询使用join子句。但对于具有外键约束的多表,实例7-13 利用LINQ to SQL实现直接引用对象连接,本实例通过直接引用对象形式查询产品的分类名称。源程序:LinqSqlQuery.aspx.cs中btnQuote_Click()部分,80,实例7-13 利用LINQ to SQL实现直接引用对象连,protected void btnQuote_Click(object sender,EventArgs e)var results=from r in db.Product select new r.ProductId,r.CategoryId,/直接引用Category对象 CategoryName=r.Category.Name;GridView1.DataSource=results;GridView1.DataBind();,81,protected void btnQuote_Click,实例7-14 利用LINQ to SQL实现join连接,本实例使用join子句实现与实例7-13一样的功能。源程序:LinqSqlQuery.aspx.cs中btnJoin_Click()部分,82,实例7-14 利用LINQ to SQL实现join连接本,protected void btnJoin_Click(object sender,EventArgs e)var results=from product in db.Product join category in db.Category on product.CategoryId equals category.CategoryId select new product.ProductId,product.CategoryId,CategoryName=category.Name;GridView1.DataSource=results;GridView1.DataBind();,83,protected void btnJoin_Click(,模糊查询,使用时需调用System.Data.Linq.SqlClient.SqlMethods.Like()方法。,84,模糊查询 使用时需调用System.Data.Linq.Sq,实例7-15 利用LINQ to SQL实现模糊查询,本实例查询分类名中包含字母c的分类。源程序:LinqSqlQuery.aspx.cs中btnFuzzy_Click()部分,85,实例7-15 利用LINQ to SQL实现模糊查询 本实,protected void btnFuzzy_Click(object sender,EventArgs e)var results=from r in db.Category where SqlMethods.Like(r.Name,%c%)select r;GridView1.DataSource=results;GridView1.DataBind();,86,protected void btnFuzzy_Click(,7.4.4 使用LINQ to SQL管理数据,插入数据利用InsertAllOnSubmit()和InsertOnSubmit()方法实现,前者用于插入集合数据实体,后者用于插入单个实体。,87,7

    注意事项

    本文(第7章数据访问课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开