Net面向对象程序设计-26-使用实体框架和数据绑定显示和编辑数据-2010-2011-2.ppt

Net面向对象程序设计-26-使用实体框架和数据绑定显示和编辑数据-2010-2011-2.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Net面向对象程序设计-26-使用实体框架和数据绑定显示和编辑数据-2010-2011-2

LINQ to SQL的主要用途是为Microsoft SQL Servert提供一个LINQ接口 然而, LINQ to SQL使用的基础模型是可扩展的,有的第三方厂商提供了内建的数据提供程序,能访问不同的数据库管理系统 Visual Studio2010还提供了一个名为“实体框架”(Entity Frameword)的技术,可用它查询和操作数据库 注意: LINQ to SQL生成的是和数据库结构非常相似的代码,而使用实体框架生成的是数据库的一个逻辑模型,称为实体逻辑模型 可针对这个逻辑模型写自己的代码 在使用实体框架构造的类中,可以将逻辑模型中的项映射到数据库中的物理表 正是因为有了这个映射层,所以将来数据库在结构上发生的任何改变都不会影响到你的应用程序 另外,可以使用任何技术实现数据库,应用程序这边不会受到任何影响 我们是用LINQ的一个变体来操作“实体框架”,称为LINQ to Entities 在LINQ to Entities中,可以使用熟悉的LINQ语法,通过一个实体对象模型来查询和操作数据 数据绑定技术可以将WPF窗体上的控件的属性与类的实例的属性关联起来 采用相似的策略,可以将窗体控件的属性与实体对象关连起来 这样一来,就可以在一个图形用户界面中显示和维护数据库中的数据 首先,必须定义好实体类,这些类映射到数据库中的表 实体框架提供了ADO.NET实体数据模型和向导,可基于数据库来生成实体类 还可手动定义一个实体模型,并用它创建一个数据库 实体框架还能生成一个自定义的上下文类,可用它访问实体和连接数据库 26.2 通过数据绑定修改数据 实体框架提供了与数据库的双向通信通道 可以使用实体框架获取数据,也可以通过实体框架修改已获取的数据,并将改动发送回数据库 26.2.1 更新现有数据 使用一个ObjectContext对象获取数据时,根据数据创建的对象位于应用程序的内存缓存中 为了更改缓存中的对象的值,采取的方式和修改任何普通对象中的值一样:设置它们的属性 然而,更新内存中的对象不会更新数据库 要在数据库中反映出这个改动,需要生成恰当的SQL Update命令,并指示数据库服务器执行这些命令 使用实体框架可以轻松的做到这一点 可以使用ObjectContext类的Refresh方法,该方法可以利用数据库中的数据来重新填充缓存中的EntityObject集合,并放弃进行的任何修改 26.2.2 更新失败的最常见原因就是发生了冲突 例如:两个用户同时更新相同的数据 使用实体框架时,有很多地方可能发生冲突 通过一个ObjectContext对象获取数据时,这些数据被缓存在应用程序的内存中,与此同时,另一个用户执行相同的查询,并获取相同的数据,如果两个人都修改了数据,而且都调用了SaveChanges方法,那么在数据库中,一个人的修改就会覆盖另一个人的修改,称之为lost update 开放式并发:实体框架实现了开放式并发(optimistic concurrency) 当它从数据库获取数据时,不会在数据库中锁定那些数据 这种形式的并发性允许其他用户同时访问相同的数据,但假定两个用户同时更改数据的可能性非常小 封闭式并发(pessimistic): 所有数据都在获取时锁定,其他用户不能同时访问它们,这样一来可以保证不会丢失任何修改 实体框架不直接支持封闭式并发 它提供了一个折衷方案 可以在属性窗口中设置“并发模式”——Fixed 应用程序修改Products EntityObject实体类的一个实例的属性时,“实体框架”会在缓存中保留这个属性的原始值的一个副本 设置了并发模式后,当应用程序调用SaveChanges方法时,实体框架会检查缓存的原始值副本,验证数据库中对应行的那一列自从取回后没有被另一个用户更改 如果没有更改,行就更新,如果列已经更改,SaveChanges方法会停止,并抛出一个异常:OptimisticConcurrencyException 一旦发生该异常,SaveChanges在数据库中进行的所有更改都会被撤销 不过,在缓存中,这些更改仍然会被保存下来 解决冲突,推荐方案是使用Refresh方法从数据库中获取必威体育精装版的数据,并用这些数据重新加载缓存,然后再次调用SaveChanges方法 26.2.3 添加和删除数据 使用实体框架生成一个实体模型时,每个实体的定义都包括一个名为CreateXXX的工厂方法 可利用这个工厂方法创建一个新实体 创建新实例时,该方法要求为基础数据库的每个必须的列(非NULL)传递实参 然后,可用实体类公开的属性设置附加的列值 为了将新实体添加到一个ObjectSet集合中,要使用AddObject方法 要将新实体保存到数据库中,要在ObjectContext对象上调用Sa

文档评论(0)

cgtk187 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档