当前位置:编程学习 > C#/ASP.NET >>

使用事务的Linq语句中多次提交出现错误

各位有没有碰到过这种情况?

嵌套事务中(TransactionScope)插入两行A,B新数据(TransactionScopeOption使用默认Required),A,B分别在两个方法中操作.

第一次操作,A运行成功,B运行出现错误,抛出异常,事务被撤销,数据库没有数据被插入!

继续第二次操作,却在A插入时抛出异常,提示:不能添加其键已在使用中的实体。(第一次A成功运行,第二次出错)

问题:第一次操作中已经将事务撤销,数据库中没有插入A,为什么第二次不能再次插入?
如果是DataContext的问题的话,第一次操作后,我将DataContext新建了一个来进行第二次操作,却仍不起作用?

求解!

(我将DataContext使用Unity注册为一个实例,以后使用是Resolve此实例! ) --------------------编程问答-------------------- 兄弟姐妹们,帮一下呀~ --------------------编程问答-------------------- 代码贴出来 --------------------编程问答-------------------- http://www.cnblogs.com/happyhippy/archive/2010/01/27/1657552.html --------------------编程问答--------------------
引用 1 楼 self131 的回复:
兄弟姐妹们,帮一下呀~

搞java的  
我只能帮顶。 --------------------编程问答-------------------- --------------------编程问答-------------------- 提示:不能添加其键已在使用中的实体?
没有用using释放,导致事务被挂起?

也可能是在complete之前的若干操作中调用了DataContext.SubmitChanges()隐式提交过了,导致后续操作无法实现回滚 --------------------编程问答--------------------
引用 6 楼 dongxinxi 的回复:
提示:不能添加其键已在使用中的实体?
没有用using释放,导致事务被挂起?

也可能是在complete之前的若干操作中调用了DataContext.SubmitChanges()隐式提交过了,导致后续操作无法实现回滚

第一次操作时,A的确是调用了SubmitChanges()方法,并且成功通过,只是在后续的操作是不满足条件,直接跳出事务,可以明确的是,事务被回滚了,数据库没有A的记录!
第二次操作时,A这里就不能再次插入值了,这个错误是Linq抛出的!
我觉得应该和DataContext有关,但我把DataContext重置以后,仍然有问题! 不知何故! --------------------编程问答-------------------- 我也想知道怎么解决~~~ --------------------编程问答-------------------- 什么数据库?
把连接参数拿来看一看 --------------------编程问答-------------------- 楼主,我解决啦。
因为我是使用一个datacontext,进行类似你那样的操作时出错的,
现在,我再NEW 出一个datacontext对像来操作,就可以避免这种错误了。。希望对你有帮助。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,