Entityframework提供的处理并发冲突方式

Entityframework提供了两种处理并发冲突的方式:放任不管、开放式并发处理。

1.放任不管  其实就是没有对并发冲突做任何处理,EF默认就是使用这种处理方式。

2.开放式并发处理    乐观并发。一旦冲突发生,系统会捕获冲突,根据策略自动处理。

 实现开放式并发处理也很简单,就是将相应字段的Concurrency Mode属性设置为Fixed,当然默认是None。如下图所示:

 

 

Untitled Page .net技术交流三号群:196882675
作者:深山老林
出处:http://wlb.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2010-06-26 08:21 深山老林 阅读(523) 评论(6) 编辑 收藏

 回复 引用 查看   
#1楼2010-06-26 23:32 | 温景良(Jason)      
谢谢
 回复 引用 查看   
#2楼[楼主]2010-06-27 07:34 | 深山老林      
@温景良(Jason)
谢我什么?

 回复 引用 查看   
#3楼2010-06-27 08:26 | 温景良(Jason)      
谢谢你告诉我怎么设置开放式并发处理,但是我想问下,如果开启的话,会有什么好处和坏处,对事务操作有影响吗
 回复 引用 查看   
#4楼[楼主]2010-06-27 08:35 | 深山老林      
@温景良(Jason)
开放式并发处理打开以后会进行并发冲突检测,并且提示用户是否继续进行操作。
如果开启事务,就会锁表,锁表的话,就无法操作,自然不会冲突。
如果是互联网项目,要进行高并发的读取的话,推荐还是在存储过程中使用NOLOCK、READPAST关键字。区别就在于:
NOLOCK 可能把没有提交事务的数据也显示出来.
READPAST 会把被锁住的行不显示出来 

 回复 引用 查看   
#5楼2010-06-28 11:29 | 温景良(Jason)      
引用深山老林:
@温景良(Jason)
开放式并发处理打开以后会进行并发冲突检测,并且提示用户是否继续进行操作。
如果开启事务,就会锁表,锁表的话,就无法操作,自然不会冲突。
如果是互联网项目,要进行高并发的读取的话,推荐还是在存储过程中使用NOLOCK、READPAST关键字。区别就在于:
NOLOCK 可能把没有提交事务的数据也显示出来.
READPAST 会把被锁住的行不显示出来 

在企业管理系统中(MIS),采用并发冲突检测好,还是事务呢,在存储过程去控制把没有提交的数据显示出来好像不是很好,因为会有脏数据,不过READPAST 这个可以,ado.net有提供这个功能吗,之前就经常碰到被锁了,然后客户操作不了,就超时了,一直找不到很理想的解决办法

 回复 引用 查看   
#6楼[楼主]2010-06-28 11:36 | 深山老林      
@温景良(Jason)
互联网项目为了提高并发性,一般都是通过存储过程中使用NOLOCK、READPAST关键字来解决。并发性的提高都是牺牲了其它方面的特性。
看项目的具体对数据的出错需要什么级别,然后考虑具体的提高并发性的办法。这个必须得具体问题具体分析。
至于ado.net是否可以使用这两个关键字,答案是可以的。

公告

英文名:Kevin

位置:中国 北京

职位:技术总监

Email:iamwlb@qq.com

昵称:深山老林
园龄:4年1个月
粉丝:92
关注:4