如何解决添加对象时,TransactionContext有什么区别?
| 表中只有一个插入时,TransactionScope
有什么区别吗?
是
MyObjectContext.Messages.Save( message,m => m.ID == message.ID);
MyObjectContext.SaveChanges();
有什么不同
using( var ts = new TransactionScope() )
{
MyObjectContext.Messages.Save( message,m => m.ID == message.ID);
MyObjectContext.SaveChanges();
ts.Complete();
}
以及究竟如何?
解决方法
它们是有区别的。如果仅使用“ 3”,则仍然有一个事务,但是它具有数据库服务器的默认隔离级别-如果是SQL Server,则它是“读已提交”。如果在默认配置中使用
TransactionScope
,则您具有序列化事务隔离级别,但如果使用other0ѭ的其他构造函数,则可以更改它。
因此,如果您需要控制事务隔离级别,则将有所不同。
, 保存一个或多个项目都没有关系,此处使用ѭ0是多余的。
从文档ѭ7the:
SaveChanges可在
交易。 SaveChanges将滚动
支持该交易并抛出
异常,如果任何脏
ObjectStateEntry对象不能是
坚持。
因此,在您的示例中,您以ѭ0分层,没有其他好处。
现在,如果您有两个单独的ObjectContext
实例,它们要确保保存了各自的数据集,那么您对两个both7 to的调用绝对需要the0ѭ。
, 不,没有区别。
SaveChanges
在一笔交易中运作。如果无法保留任何脏的“ 14”对象,则“ 3”将回滚该事务并引发异常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。