TransactionScope.Serializable使用疑问

zhanwengong 2016-12-22 03:32:18
使用Serializable时,提示说当事务执行时,其他事务的更新与新增都不会被执行的。
如图提示:


但测试时,发现只有更新不会,但新增还是会的。
如图结果:
...全文
94 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanwengong 2016-12-22
  • 打赏
  • 举报
回复
代码如下: try { var transactionOptions = new TransactionOptions(); transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.Serializable; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions)) { var result = 0; var connString = "..."; using (OracleConnection conn = new OracleConnection(connString)) { Console.WriteLine(transactionOptions.IsolationLevel.ToString()); conn.Open(); var sql = string.Empty; var cmd = new OracleCommand(sql, conn); sql = "select * from kdy_gzw_t_test order by F_KDY_DATE DESC"; cmd = new OracleCommand(sql, conn); var reader = cmd.ExecuteReader(CommandBehavior.Default); Console.WriteLine("select " + DateTime.Now.ToString("HH:mm:ss.fff")); Console.WriteLine(); sql = "insert into kdy_gzw_t_test values(z_bas_item.nextval,1,'1','1',sysdate)"; cmd = new OracleCommand(sql, conn); result = cmd.ExecuteNonQuery(); Console.WriteLine("insert " + DateTime.Now.ToString("HH:mm:ss.fff")); Console.WriteLine(); sql = "update kdy_gzw_t_test set F_KDY_TEXT=z_bas_item.nextval where FID=2355002"; cmd = new OracleCommand(sql, conn); result = cmd.ExecuteNonQuery(); Console.WriteLine("update " + DateTime.Now.ToString("HH:mm:ss.fff")); Console.WriteLine(); Console.WriteLine("press any key to continue..."); Console.ReadKey();//等待输入 Console.WriteLine(); scope.Complete(); Console.WriteLine("complete " + DateTime.Now.ToString("HH:mm:ss.fff")); Console.WriteLine(); } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); }

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧