如何在.NET中实现事务(2)

原创 2004年03月08日 11:35:00

并发问题

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。并发问题包括: 丢失或覆盖更新,未确认的相关性(脏读),不一致的分析(非重复读),幻像读。但是如何来避免数据读取时脏读等问题出现呢?这里简单介绍一下:

SQL Server数据库中,提供四种隔离级别:未提交读、提交读、可重复读、可串行读。这四种隔离级别可以不同程度地保证并发的数据完整性: 

隔离级别

不可重复读取

未提交读

提交读

可重复读

可串行读

其中第二项为默认,而在.net框架中,同样支持事务的隔离级别。我们可以通过System.Data.IsolationLevel 来实现: public virtual IsolationLevel IsolationLevel {get;}

其成员及相应的含义如下: 

 

成员名称

说明

Chaos

.NET Framework 精简版的支持。

无法改写隔离级别更高的事务中的挂起的更改。

16

ReadCommitted

.NET Framework 精简版的支持。

在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。

4096

ReadUncommitted

.NET Framework 精简版的支持。

可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。

256

RepeatableRead

.NET Framework 精简版的支持。

在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻像行。

65536

Serializable

.NET Framework 精简版的支持。

DataSet 上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。

1048576

Unspecified

.NET Framework 精简版的支持。

正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。

-1



    显而意见,数据库的四个隔离级别在这里都有映射。在这里,SqlTransaction以及OleDbTransaction事务的 IsolationLevel 默认值为 ReadCommitted。那么我们如何使用呢? 可以使用下面方法实现:

trans = cnNorthwind.BeginTransaction( _
IsolationLevel.Serializable)

.net中的4种事务总结

在一个MIS系统中,没有用事务那就绝对是有问题的,要么就只有一种情况:你的系统实在是太小了,业务业务逻辑有只要一步执行就可以完成了。因此掌握事务处理的方法是很重要,进我的归类在.net中大致有以下4种...
  • u012770274
  • u012770274
  • 2014年05月26日 08:54
  • 4471

ASP.NET事务处理

事务处理简介1.1什么是事务处理事务是一组组合成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。如果在事务过程中没有遇到错误,事物中的所有修改都将永久成为...
  • wkjs
  • wkjs
  • 2006年03月19日 18:20
  • 7115

.NET 事务处理总结

事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下3种总结整理如下:方法1:直接写入到sql 中在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRA...
  • ekinyang
  • ekinyang
  • 2008年07月09日 21:57
  • 7754

.NET数据库操作的事务处理

  • xiaoxiaohai123
  • xiaoxiaohai123
  • 2007年03月21日 13:17
  • 1657

.NET分布式事务--TransactionScop

概述        SqlTransaction可以解决同一个数据库的事务控制,但是,不能解决不同数据库的事务控制,今天就说一说,这个的解决方法,即:TransactionScope的应用。     ...
  • jiben2qingshan
  • jiben2qingshan
  • 2014年04月14日 19:16
  • 4531

如何在.NET中实现事务(1)

如何在.NET中实现事务机制呢? 通常可以使用2种方式: 直接写入到sql 中;使用ADO.NET 实现。下面依次作一下介绍:方法1:直接写入到sql 中  使用 BEGIN TRANS, COMMI...
  • redbb
  • redbb
  • 2004年03月08日 11:31
  • 917

.NET中实现网站的国际化

原文地址:http://dotnet.9sssd.com/aspnet/art/949 网站在开发的过程中需要实现多语言版本,我们暂且认为有英语和汉语两个版本。网站结构包括,UI过程,res...
  • XuWei_XuWei
  • XuWei_XuWei
  • 2014年07月02日 15:52
  • 551

C#综合揭秘——细说事务

原文: http://www.cnblogs.com/leslies2/archive/2012/01/05/2289106.html 风尘浪子 只要肯努力,梦想总有一天会实现     ...
  • xuefeiliuyuxiu
  • xuefeiliuyuxiu
  • 2016年12月26日 20:14
  • 232

c# + mysql + 事务处理(转载于 《C#数据库事务原理及实践》)

什么是数据库事务   数据库事务是指作为单个逻辑工作单元执行的一系列操作。 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作:   · 更新客户所购商品的库存信息  ...
  • AAA123524457
  • AAA123524457
  • 2015年06月05日 15:01
  • 2009

spring开启事务在service层

spring开启事务在service层
  • abc19900828
  • abc19900828
  • 2014年10月11日 17:15
  • 2025
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在.NET中实现事务(2)
举报原因:
原因补充:

(最多只允许输入30个字)