有没有办法在不调用内部自动事务处理的情况下执行DbContext.SaveChanges()?
我正在努力处理事务(DbTransaction),但是当我调用它的Commit时,我收到错误“SqlConnection不支持并行事务” 我相信这是由于SaveChanges正在做自己的内部交易工作,我想压制它。
.NET 4.5,EntityFramework.dll ver 5。
谷歌搜索显示的方法很少,但代码不兼容。 一些显示SaveChanges可以接受一个布尔值,它不在此版本中。然后调用AcceptAllChanges()哪个方法也不存在。 虽然有些人正在使用System.Transaction.TransactionScope,但它与此System.Data.Common.DbTransaction不同。
答案 0 :(得分:1)
http://sqlanywhere-forum.sap.com/questions/11320/entity-framework-savechanges-closes-connection
这暗示了ObjectContext
如果您的EDMX代码生成策略设置为None,则会生成DbContext代码库。
link:Is ObjectContext deprecated in .NET 4.5?
通过将其更改为Default,您将获得ObjectContext代码库gen。
到目前为止,我发现它们的差异,使用DbContext,每当你调用它的SaveChanges()时,它将自动关闭底层连接,你的下一个db任务将有一个新的连接,这基本上打破了事务控制我寻求的东西。 您需要在没有conx关闭的情况下运行整个数据库任务,或者在事务中重新创建。通过使用ObjectContext,如果我在它之前正确设置了事务和连接代码,SaveChanges()将不会自动关闭连接。