资源描述:
《深入ADO.NET开发—高级数据访问技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、深入ADO.NET开发—高级数据访问技术微软特邀开发专家基础预习熟悉MicrosoftADO.NET了解WebServices基础开发熟悉.NET文件集操作LEVEL400议题并发连接池事务可抽取的数据访问层并发性问题在可断开连接架构中必须要面对并发问题当两个(或多个)用户获取并修改相同的记录,然后试图同时维持各自的修改时,将会发生冲突:脏读,不可重复读,虚幻读当提交多个更新的时候,会造成部分更新无法正确完成悲观与乐观(ADO.NET构建)并发锁ADO.NET中对并发性问题的处理与DataAdapter对象相连接的DataSet对象
2、使用乐观锁来处理记录内容冲突如果使用用户存储过程来替代表操作的话,并发问题的处理还需要一些额外的工作DataAdapter配置向导能够创建存储过程来处理这个问题当ContinueUpdateOnError为false(缺省值)时,在发生第一个冲突的时候会抛出DBConcurrencyException异常捕获该异常并且通知用户,或者处理该异常或提示用户下一步需要做出哪些选择并发:在.NET中使用乐观锁的处理步骤DataSetchanges=myDataSet.GetChanges();try{mySqlDataAdapter.Upd
3、ate(changes);myDataSet.Merge(changes);}catch(DBConcurrencyExceptione){//通知用户记录从上次更新到现在已经发生过变化,放弃更新}finally...更高级的操作模型DataSetchanges=myDataSet.GetChanges();try{mySqlDataAdapter.ContinueOnError=true;mySqlDataAdapter.Update(changes);if(changes.HasErrors){//获取错误DataRow[]co
4、llisions=changes.Tables[0].GetErrors();//处理错误}演示一处理并发性问题连接池连接池可以极大地提升性能和可扩展性避免由创建连接所带来的大量消耗通过在连接字符串中添加以下属性来调节连接池:Pooling=true;MaxPoolSize=5;MinPoolSize=3;上面的字符串将打开连接池,并且确保在连接池中至少存在着3个连接,并且最多为5个连接当达到最大连接时,打开新链接的请求将排队一段可配置的时间。注意链接是通过对链接字符串精确匹配的法则被池化的。池化机制对名称-值对间的空格敏感。例如,
5、下面的两个链接字符串将生成单独的池,因为第二个字符串包含了一个额外的空字符。"IntegratedSecurity=SSPI;Database=Northwind""IntegratedSecurity=SSPI;Database=Northwind"演示二连接池事务ACID原则:原子性,一致性,隔离性,持久性事务行为要么完成所有动作,要么不做任何动作同时提交或者回滚所有的修改不是所有的SQL语句都允许出现在事务中ADO.NET事务只能应用于单一链接中SqlTransaction对象从SqlConnection.BeginTrans
6、action()方法中返回SqlTransaction类SqlTransactiontrans=conn.BeginTransaction();隔离级别枚举(IsolationLevel):ReadCommitted,ReadUncommitted,RepeatableRead,Serializable,UnspecifiedSerializable是最高级别的隔离//处理工作Insert,Update,Delete//要么提交所有的修改trans.Commit();//要么如果发生错误,撤回所有的修改trans.RollBack(
7、);隔离级别隔离级别脏读不可重复读虚幻读ReadUncommitted是是是ReadCommitted否是是RepeatableRead否否是Serializable否否否Serializable提供了最高的隔离级别,但却只有最低的执行效率演示三本地事务操作高级事务为了执行跨数据库事务,需要通过System.EnterpriseServices向分布式事务协调器(DTC)注册链接在中间层Web服务上添加:System.EnterpriseServices.Transaction属性TransactionOption枚举:Disabl
8、ed,NotSupported,Required,RequiresNew,SupportedTransactionIsolationLevel枚举:ReadCommitted,ReadUnCommitted,RepeatableRea