数据库与实体数据模型_第1页
数据库与实体数据模型_第2页
数据库与实体数据模型_第3页
数据库与实体数据模型_第4页
数据库与实体数据模型_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、教育部普通高等教育十二五国家级规划教材教育部普通高等教育十二五国家级规划教材C#程序设计及应用教程程序设计及应用教程第第3版版(包括简化版:(包括简化版:C#程序设计教程程序设计教程第第3版)版)第第12章章 数据库与实体数据库与实体数据模型数据模型2Ch12 数据库与实体数据模型数据库与实体数据模型12.1 创建数据库和表创建数据库和表12.2 利用实体框架创建实体利用实体框架创建实体数据模型数据模型12.3 使用使用LINQ to Entities访问实体对象访问实体对象12.4 DataGrid控件控件312.1 创建数据库和表创建数据库和表l12.1.1 ADO.NET数据访问技术数据

2、访问技术l12.1.2 SQL Server 2012简介简介l12.1.3 创建创建LocalDB数据库数据库l12.1.4 连接其他已有的数据库连接其他已有的数据库12.1.1 ADO.NET数据访问技术数据访问技术l1利用利用DataSet访问访问数据库数据库用用DataSet来实现,这是来实现,这是ADO.NET刚推出时提供的技术,用于在刚推出时提供的技术,用于在断开连接方式下对数据进行处理,在断开连接方式下对数据进行处理,在VS2005、VS2008、VS2010和和VS2012中都可以中都可以使用使用。将驻留在本机内存中的将驻留在本机内存中的DataSet作为中间层,即应用程序和作

3、为中间层,即应用程序和DataSet进行交互,进行交互,DataSet再和数据库进行再和数据库进行交互交互。l2利用利用LINQ to DataSet访问数据库访问数据库这种方式和第一种方式类似,区别是应用程序可以使用这种方式和第一种方式类似,区别是应用程序可以使用LINQ语语法访问法访问DataSet,用法比第一种方式更灵活,也更简单,用法比第一种方式更灵活,也更简单。在在VS2008、VS2010和和VS2012中都可以使用。中都可以使用。412.1.1 ADO.NET数据访问技术数据访问技术l3利用利用LINQ to SQL访问数据库访问数据库用用LINQ to SQL来实现,在来实现,

4、在VS2008、VS2010和和VS2012中都可中都可以使用。以使用。这种方式直接和这种方式直接和SQL Server数据库进行交互,执行效率高,速数据库进行交互,执行效率高,速度快,但该方式不支持其他类型的数据库。度快,但该方式不支持其他类型的数据库。在在LINQ to SQL中,先利用中,先利用O/R设计器构建模型,再利用该模型设计器构建模型,再利用该模型传递传递SQL语句,执行语句,执行SQL命令,也可以用命令,也可以用LINQ语法直接访问语法直接访问SQL Server。使用这种技术时,一般用它设计自定义的中间层。使用这种技术时,一般用它设计自定义的中间层对象模型(中间件),然后将其

5、做成对象模型(中间件),然后将其做成.dll文件供其他应用程序调文件供其他应用程序调用。用。512.1.1 ADO.NET数据访问技术数据访问技术l4利用实体框架和利用实体框架和LINQ to Entities访问数据库访问数据库用实体框架和用实体框架和LINQ to Entities来实现,这是微软建议的数据库来实现,这是微软建议的数据库访问方式,在访问方式,在VS2008、VS2010和和VS2012中均可使用。中均可使用。在在VS2012中利用该模型可支持多种类型的数据库(包括中利用该模型可支持多种类型的数据库(包括SQL Server、Oracle、DB2、MySQL等),而且可由数据

6、库供应商等),而且可由数据库供应商直接提供该模型的数据库访问引擎直接提供该模型的数据库访问引擎。612.1.2 SQL Server 2012简介简介l1SQL Server技术的分类技术的分类7分分 类类说说 明明数据库引擎数据库引擎用于存储、处理和保护数据的核心服务。数据库引擎提供了受控访问和快速事务处理,以满用于存储、处理和保护数据的核心服务。数据库引擎提供了受控访问和快速事务处理,以满足企业内最苛刻的数据消费应用程序的要求。数据库引擎还提供了大量的支持以保持高可用性足企业内最苛刻的数据消费应用程序的要求。数据库引擎还提供了大量的支持以保持高可用性Data Quality Service

7、s简称简称DQS,提供知识驱动型数据清理解决方案。,提供知识驱动型数据清理解决方案。DQS可以生成知识库,然后使用此知识库,可以生成知识库,然后使用此知识库,同时采用计算机辅助方法和交互方法,执行数据更正和消除重复的数据。可以使用基于云的引用同时采用计算机辅助方法和交互方法,执行数据更正和消除重复的数据。可以使用基于云的引用数据服务,并可以生成一个数据管理解决方案将数据服务,并可以生成一个数据管理解决方案将DQS与与SQL Server Integration Services和和Master Data Services相集成相集成Analysis Services是一个针对个人、团队和公司商

8、业智能的分析数据平台和工具集。服务器和客户端设计器通是一个针对个人、团队和公司商业智能的分析数据平台和工具集。服务器和客户端设计器通过使用过使用PowerPivot、Excel和和SharePoint Server环境,支持传统的环境,支持传统的OLAP解决方案、新的表格解决方案、新的表格建模解决方案以及自助式分析和协作。建模解决方案以及自助式分析和协作。Analysis Services 还包括数据挖掘,利用它可以发现隐还包括数据挖掘,利用它可以发现隐藏在大量数据中的模式和关系藏在大量数据中的模式和关系Integration Services是一个生成高性能数据集成解决方案的平台,其中包括对

9、数据仓库提供提取、转换和加载是一个生成高性能数据集成解决方案的平台,其中包括对数据仓库提供提取、转换和加载 (ETL) 处理的包处理的包Master Data Services用于主数据管理的用于主数据管理的SQL Server解决方案。基于解决方案。基于Master Data Services生成的解决方案可帮生成的解决方案可帮助确保报表和分析均基于适当的信息。使用助确保报表和分析均基于适当的信息。使用Master Data Services可以为主数据创建中央存储库,可以为主数据创建中央存储库,并随着主数据随时间变化而维护一个可审核的安全对象记录并随着主数据随时间变化而维护一个可审核的安全

10、对象记录复制复制复制是一组技术,用于在数据库间复制和分发数据和数据库对象,然后在数据库间进行同步复制是一组技术,用于在数据库间复制和分发数据和数据库对象,然后在数据库间进行同步操作以维持一致性。使用复制时,可以通过局域网和广域网、拨号连接、无线连接和操作以维持一致性。使用复制时,可以通过局域网和广域网、拨号连接、无线连接和Internet,将数据分发到不同位置以及分发给远程用户或移动用户将数据分发到不同位置以及分发给远程用户或移动用户Reporting Services提供企业级的提供企业级的Web报表功能,可以创建从多个数据源提取数据的表,发布各种格式的表,以报表功能,可以创建从多个数据源提

11、取数据的表,发布各种格式的表,以及集中管理安全性和订阅及集中管理安全性和订阅12.1.2 SQL Server 2012简介简介l2SQL Server 2012数据库数据库引擎的主要引擎的主要特点特点(1)提供了针对操作系统升级的)提供了针对操作系统升级的AlwaysOn可用性组的跨群集可用性组的跨群集迁移。迁移。(2)针对可编程性的增强功能)针对可编程性的增强功能。(3)针对可扩展性和性能的增强功能)针对可扩展性和性能的增强功能。(4)大数据支持)大数据支持。812.1.2 SQL Server 2012简介简介l3SQL Server 2012的的版本版本SQL Server 2012

12、Enterprise(64位和位和32位位)SQL Server 2012 Business Intelligence(64位和位和32位位)SQL Server 2012 Standard(64位和位和32位位)SQL Server 2012 Web(64位和位和32位位)SQL Server 2012 Developer(64位和位和32 位位)SQL Server 2012 Express(64位和位和32位位)SQL Server 2012 Express LocalDB912.1.3 创建创建LocalDB数据库数据库l优点是用法简单,而且将项目和数据库从一台机器复制到另一台机器上时

13、优点是用法简单,而且将项目和数据库从一台机器复制到另一台机器上时,不需要做任何修改,不需要做任何修改。lLocalDB是基于服务的数据库是基于服务的数据库。l通过应用程序访问数据库时,通过应用程序访问数据库时,VS2012会自动将该会自动将该.mdf文件附加到文件附加到LocalDB的默认实例中,当不再使用数据库时,的默认实例中,当不再使用数据库时,LocalDB便将便将.mdf文件从默认实例文件从默认实例中自动分离出来。中自动分离出来。l虽然本章的例子用虽然本章的例子用LocalDB来讲解,但是实现代码对来讲解,但是实现代码对SQL Server 2012的的其他版本同样适用其他版本同样适用

14、。l也可以在也可以在VS2012下使用下使用SQL Server 2008,比如,比如SQL Server 2008 Express版,但是如果将其升级到版,但是如果将其升级到SQL Server 2012 Express LocalDB,将无法再用将无法再用SQL Server 2008的的Express打开它。打开它。1012.1.3 创建创建LocalDB数据库数据库l学院编码对照表(学院编码对照表(XueYuan)11编编 码码名名 称称01计算机学院计算机学院02数学学院数学学院03文学院文学院12.1.3 创建创建LocalDB数据库数据库l学生基本情况表(学生基本情况表(Stud

15、ent)12学号学号姓名姓名性别性别出生日期出生日期学院编学院编码码成绩成绩照片照片05001001张三玉女1987-10-50188 05001002李斯男1986-4-180176 04013029王武男1986-5-190394 04013030王小琳女1985-11-60337 03013031赵六方男1987-12-280355 03115002欧阳陈其欧阳陈其男男1986-1-10292 12.1.3 创建创建LocalDB数据库数据库l家庭成员情况表(家庭成员情况表(FamilyInfo)13学号学号成员姓名成员姓名成员性别成员性别与本人关系与本人关系id05001001张明勤男

16、父亲105001001胡留燕女母亲205001001张三地男兄长305001002李商祥男父亲405001002赵菊音女母亲504013030王琳王琳女女母亲母亲612.1.3 创建创建LocalDB数据库数据库l【例【例12-1】演示在】演示在VS2012开发环境下直接创建数据库的基本开发环境下直接创建数据库的基本用法用法1412.1.3 创建创建LocalDB数据库数据库l【例【例12-1】演示在】演示在VS2012开发环境下直接创建数据库的基本开发环境下直接创建数据库的基本用法用法1512.1.3 创建创建LocalDB数据库数据库l【例【例12-1】演示在】演示在VS2012开发环境下

17、直接创建数据库的基本开发环境下直接创建数据库的基本用法用法1612.1.3 创建创建LocalDB数据库数据库l【例【例12-1】演示在】演示在VS2012开发环境下直接创建数据库的基本开发环境下直接创建数据库的基本用法用法1712.1.3 创建创建LocalDB数据库数据库l【例【例12-1】演示在】演示在VS2012开发环境下直接创建数据库的基本开发环境下直接创建数据库的基本用法用法1812.1.3 创建创建LocalDB数据库数据库l【例【例12-1】演示在】演示在VS2012开发环境下直接创建数据库的基本开发环境下直接创建数据库的基本用法用法CREATE TABLE dbo.Stude

18、nt ( XueHao NCHAR (8) NOT NULL, XingMing NVARCHAR (50) NOT NULL, XingBie NCHAR (1) NULL, BirthDate DATE NULL, ChengJi INT NULL, XueYuanID NCHAR (2) NULL, Photo VARBINARY (MAX) NULL, PRIMARY KEY CLUSTERED (XueHao ASC), CONSTRAINT FK_Student_XueYuan FOREIGN KEY (XueYuanID) REFERENCES dbo.XueYuan (XueY

19、uanID);1912.1.3 创建创建LocalDB数据库数据库l【例【例12-1】演示在】演示在VS2012开发环境下直接创建数据库的基本开发环境下直接创建数据库的基本用法用法2012.1.3 创建创建LocalDB数据库数据库l【例【例12-1】演示在】演示在VS2012开发环境下直接创建数据库的基本开发环境下直接创建数据库的基本用法用法2112.1.4 连接其他已有的数据库连接其他已有的数据库l1Microsoft SQL Serverl2Microsoft SQL Server Compact 4.0l3Microsoft SQL Server数据库数据库文件文件l4其他其他2212

20、.2 利用实体框架创建实体数据模型利用实体框架创建实体数据模型l12.2.1 实体框架基本实体框架基本概念概念l12.2.2 实体框架开发实体框架开发模式模式l12.2.3 从数据库创建实体数据模型从数据库创建实体数据模型2312.2.1 实体框架基本概念实体框架基本概念l实体框架具有以下优点。实体框架具有以下优点。l(1)应用程序可以通过概念模型(包括具)应用程序可以通过概念模型(包括具有继承性、复杂成员和关系的类型)来工作有继承性、复杂成员和关系的类型)来工作。l(2)应用程序不再对特定的数据引擎或存)应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。储架构具有硬编码依赖性。l(3)

21、可以在不更改应用程序代码的情况下)可以在不更改应用程序代码的情况下更改概念模型与特定于存储的架构之间的映更改概念模型与特定于存储的架构之间的映射。射。l(4)开发人员可以使用可映射到各种存储)开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。)的一致的应用程序对象模型。l(5)多个概念模型可以映射到同一个存储)多个概念模型可以映射到同一个存储架构。架构。2412.2.2 实体框架开发模式实体框架开发模式2512.2.2 实体框架开发模式实体框架开发模式l1数据库优先(数据库优先(Database First)

22、数据库优先(数据库优先(Database First)是指先创建数据库,然后再根据)是指先创建数据库,然后再根据数据库生成对应的实体数据模型(数据库生成对应的实体数据模型(.edmx文件)文件)l2模型优先(模型优先(Model First)模型优先(模型优先(Model First)是指先利用开发工具提供的模板创建实)是指先利用开发工具提供的模板创建实体数据模型(体数据模型(.edmx文件),然后再根据实体数据模型生成数据文件),然后再根据实体数据模型生成数据库库l3代码优先(代码优先(Code First)代码优先(代码优先(Code First)是指先编写数据模型代码,然后再根据)是指先

23、编写数据模型代码,然后再根据代码(代码(classes)生成数据库;或者先编写创建数据库的代码,)生成数据库;或者先编写创建数据库的代码,然后再从数据库用代码生成实体数据模型。然后再从数据库用代码生成实体数据模型。2612.2.3 从数据库创建实体数据模型从数据库创建实体数据模型l【例【例12-2】使用】使用“实体数据模型实体数据模型”模板生成模板生成MyDbModel.edmx文件,实现文件,实现MyDbModel概念模型和概念模型和MyDb.mdf数据库(表、视图以及存储过程)之间的映射。数据库(表、视图以及存储过程)之间的映射。2712.2.3 从数据库创建实体数据模型从数据库创建实体数

24、据模型l【例【例12-2】【从数据库生成】【从数据库生成】2812.2.3 从数据库创建实体数据模型从数据库创建实体数据模型l【例【例12-2】选择数据连接选择数据连接2912.2.3 从数据库创建实体数据模型从数据库创建实体数据模型l【例【例12-2】选择数据对象选择数据对象3012.2.3 从数据库创建实体数据模型从数据库创建实体数据模型l【例【例12-2】生成的实体数据模型生成的实体数据模型3112.2.3 从数据库创建实体数据模型从数据库创建实体数据模型l【例【例12-2】设置删除时的关联操作设置删除时的关联操作3212.3 使用使用LINQ to Entities访问实体访问实体对象

25、对象l12.3.1 创建实体框架上下文(创建实体框架上下文(DbContext)实例实例l12.3.2 加载相关加载相关对象对象l12.3.3 查询查询数据数据l12.3.4 修改修改数据数据l12.3.5 添加或删除数据添加或删除数据3312.3.1 创建实体框架上下文(创建实体框架上下文(DbContext)实例)实例l1在页面或窗口中只创建一个实体框架上下文实例在页面或窗口中只创建一个实体框架上下文实例l2使用使用using语句实例化实体框架语句实例化实体框架上下文上下文using(var context = new MyDbEntities() /语句块语句块l3通过实体框架上下文通过

26、实体框架上下文实例实例( DbContext类类)操作数据操作数据Database属性:该属性返回数据库实例,利用它可检查数据库属性:该属性返回数据库实例,利用它可检查数据库是否存在、以及创建和删除数据库。是否存在、以及创建和删除数据库。SaveChanges方法:将更改保存到数据库。方法:将更改保存到数据库。3412.3.2 加载相关对象加载相关对象l1使用使用LINQ to Entities加载加载对象对象这种方式称为延迟加载(这种方式称为延迟加载(Lazy Loading),即先利用),即先利用LINQ to Entities定义查询语句,然后再通过定义查询语句,然后再通过foreach

27、或者通过数据绑定获或者通过数据绑定获取查询结果时才将数据加载到对象中。取查询结果时才将数据加载到对象中。l2使用使用Load方法加载方法加载对象对象这种方式称为显式加载,即通过这种方式称为显式加载,即通过Load方法将数据加载到实体中方法将数据加载到实体中。3512.3.2 加载相关对象加载相关对象l【例例12-3】显示成绩大于等于】显示成绩大于等于60的所有学生信息的所有学生信息3612.3.3 查询数据查询数据l【例【例12-4】显示学生信息,并将所在学院编码显示为实际的名】显示学生信息,并将所在学院编码显示为实际的名称称3712.3.3 查询数据查询数据l【例【例12-5】统计所有姓王的

28、人数以及这些学生的合计成绩】统计所有姓王的人数以及这些学生的合计成绩3812.3.3 查询数据查询数据l【例【例12-6】显示学生学号、姓名及其家庭成员信息】显示学生学号、姓名及其家庭成员信息3912.3.4 修改数据修改数据l第一种办法是使用实体框架和第一种办法是使用实体框架和LINQ to Entities修改数据,即修改数据,即先利用查询得到要修改的实体对象,修改后再调用实体对象上先利用查询得到要修改的实体对象,修改后再调用实体对象上下文的下文的SaveChanges方法将其保存到数据库中,这是建议的方法将其保存到数据库中,这是建议的修改办法。修改办法。l第二种办法是通过第二种办法是通过

29、MyDbEntities对象(从对象(从DbContext继承的继承的实体数据模型上下文)的实体数据模型上下文)的Dababase属性调用属性调用ExecuteSqlCommand方法,在该方法中直接传递要执行的方法,在该方法中直接传递要执行的SQL语句(修改、添加、删除等操作)。但是由于传递语句(修改、添加、删除等操作)。但是由于传递SQL语语句只有在执行时才能发现句只有在执行时才能发现SQL语句是否有语法错误,因此一般语句是否有语法错误,因此一般不使用这种办法。不使用这种办法。4012.3.4 修改数据修改数据l【例【例12-7】将张三玉的成绩增加】将张三玉的成绩增加10分分4112.3.

30、5 添加或删除数据添加或删除数据l添加或删除数据的办法也是直接对实体对象进行操作,操作完添加或删除数据的办法也是直接对实体对象进行操作,操作完成后再调用实体对象上下文的成后再调用实体对象上下文的SaveChanges方法将其保存到方法将其保存到数据库中。数据库中。l通过通过MyDbEntities对象的对象的Dababase属性调用属性调用ExecuteSqlCommand方法,在该方法中直接传递要执行的方法,在该方法中直接传递要执行的SQL语句语句4212.3.5 添加或删除数据添加或删除数据l【例【例12-8】演示通过代码直接添加、删除数据的基本用法】演示通过代码直接添加、删除数据的基本用

31、法4312.4 DataGrid控件控件l12.4.1 绑定各种类型的绑定各种类型的数据数据l12.4.2 标题和行列控制标题和行列控制4412.4 DataGrid控件控件l将将DataGrid控件添加到控件添加到WPF窗口或页面后,该控件默认具有窗口或页面后,该控件默认具有的功能主要有:的功能主要有:支持自动排序。用鼠标单击某个列标题,则对应的列就会自动按升序或降序排支持自动排序。用鼠标单击某个列标题,则对应的列就会自动按升序或降序排序(单击升序,再单击降序)。字母顺序区分大小写。序(单击升序,再单击降序)。字母顺序区分大小写。支持自动调整大小功能。双击标题之间的列分隔符,该分隔符左边的列

32、会自动支持自动调整大小功能。双击标题之间的列分隔符,该分隔符左边的列会自动按照单元格的内容展开或收缩。按照单元格的内容展开或收缩。单击单击DataGrid左上角的矩形块可以选择整个表,单击每行左边的矩形块可以选左上角的矩形块可以选择整个表,单击每行左边的矩形块可以选择整行。择整行。支持调整列宽功能。在标题区拖动列分隔符可调整显示的列宽。支持调整列宽功能。在标题区拖动列分隔符可调整显示的列宽。支持编辑功能。双击单元格或者按支持编辑功能。双击单元格或者按键可直接编辑单元格内容。在编辑模式键可直接编辑单元格内容。在编辑模式下,按下,按键提交更改,或者按键提交更改,或者按键将单元格恢复为更改前的值。键将单元格恢复为更改前的值。如果用户滚动至网格的结尾,将会看到用于添加新记录的行。用户可在该行中如果用户滚动至网格的结尾,将会看到用于添加新记录的行。用户可在该行中直接添加数据,直接添加数据,DataGrid控件会自动将其添加到控件会自动将其添加到ItemsSource中。中。4512.4.1 绑定各种类型的数据绑定各种类型的数据l1DataGrid提供的列类型提供的列类型DataGridTextColumn:String类型,默认用字符串显示该列的类型,默认用字符串显示该列的内容。内容。DataGridCheckBoxColumn:Boolean类型,默认用类型,默认用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论