DataSet的数据并发异常处理
热门问答:
推荐阅读
| · 红外连接笔记本电脑gprs包月上www网的步骤 |
| 摘要:本人自今年三月以来一直通过手机gprs连接电脑用代理服务器拨号上www网的,开始用nokia6610后来用sx1,感觉在这方面6610优于...... |
| · 董事长侯为贵大量增持股票 表示对中兴有信心 |
| 摘要: 伴随大盘春节前后的反弹,绩优股中兴通讯日前创出近三年多来的新高30.01元。截至去年半年报的资料显示,中兴通讯持股的董事、监事和高级管理人员共有15位,其中董事长侯为贵持股175680股,董事、总经理殷一民持股97344股,董事、副总经理史立荣持股76608股,董事、副总经理何士友持股72806股,监事会召集人张太峰持股97344股,副总经理、财务总监韦在胜持股76608股。 2002年,中兴通讯第一次...... |
正文
介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。
摘要:ado.net为提高数据密集型(data-intensive)应用程序的性能、简化这类程序的建立过程提供了多种技术。数据集(dataset)作为ado.net对象模型的标志,作为一个微型的、不连接(disconnected)的数据源的副本提供服务。虽然使用数据集通过减少对数据库服务器的高花费的访问而提高了性能,但是它也带来了多个用户试图同时访问相同数据的可能性,由此引起数据并发性异常(data concurrency exception)。本文调查了数据并发性异常背后的通常起因,介绍了解决这些问题的技术。
把数据访问层升级到ado.net有很多好处,其中之一是使用内部数据集对象。数据集对象基本上是一个不连接的、内存中的数据库的拷贝。数据集对象包含一个或者多个数据表(datatable),每个数据表一般对应于数据库中的一个表。数据集提供了很多好处,但也带来一些问题,特别是可能遇到与数据并发性异常相关的问题。我建立了一个简单的windows forms顾客服务应用程序,用它来解释该问题的潜在的缺陷。本文我将介绍该应用程序并演示怎样解决它所引起的数据并发性问题。
本文建立的顾客服务应用程序示例是使用visual basic .net和sql server 2000建立的,但是由于微软.net框架组件是语言无关(language-agnostic)的,因此任何与.net框架组件兼容的语言都可以使用。同样,由于数据集对象抽象了数据源,数据源的实际执行并不重要;无论下层的数据源是sql server、本地xml文件或者从一个服务中检索到的数据,数据并发性异常同样会出现。
数据集的利弊
数据集提供了很多好处,例如比起数据库层次,它强化了内存中的完整性规则。数据集对象可以定义和强化表之间的关系和列的约束,确保使用的商业规则对数据库没有缺陷。通过数据库抽象,你能建立单个代码集合访问数据集对象而不必考虑填充该数据集的源数据。下层的数据源也许是sql server、oracle甚至xml文件。无论下层数据源是什么,代码使用相同的方法与数据集交互。这使你能改变下层数据源而不改变代码。
但是使用数据集的最大好处是提高了性能。因为数据集与下层数据库断开,代码将更少作数据库的调用,显著地提高了性能。你能向数据集的多个数据表中添加新行、验证每行的有效性和参照完整性。数据适配器(dataadapter)把数据集连接到下层数据库,能使用一条命令更新下层数据库。每个表中的所有新行都使用命令加入,以确保所有添加到数据库的行都是有效的。
性能的最优化是有代价的。因为数据集对象与下层数据库断开,经常有机会出现数据没有超期(out of date)的情况。因为数据集不保存活动数据,只保存当时填充数据集的活动数据的一个快照,与数据并发性相关的问题就会出现。数据并发性问题出现在多个用户访问相同的数据并且任何一个用户没有其它用户的信息就能更新数据。这就出现了一个用户偶然更新数据而不知道那些数据已经改变了,不是他在程序中看到的了。幸运的是数据集对象拥有捕获数据并发性问题的内建(built-in)支持,因此应用程序能正确地作出反应。
共5页。 1 2 3 4 5 8 :


讨论区