Connection.BeginTransaction 和实体框架 4?
我正在尝试将事务与 EF4 Code-first 和工作单元实现一起使用。我们不能从上下文中使用 Connection.BeginTransaction 是否有原因?它仅打算用于 SQL 事务吗?因为当我调用它时,我收到错误:非法操作。连接已关闭。
谢谢。
I am trying to use transactions with EF4 Code-first with an unit of work implementation. Is there a reason we cannot use Connection.BeginTransaction from the context ? It is only intended to be used in SQL transactions only ? Because when im calling it i get the error : Illegal operation. Connection is closed.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
部分答案是 DbContext.SaveChanges() 是自动事务性的,因此在许多情况下,您不需要滚动自己的事务。您的场景是什么,为什么您认为需要手动进行交易?
如果您决定需要它们,请将 SaveChanges 包装在事务中:
如果您运行 Profiler,您会注意到一旦离开 using{} 块,事务就会回滚。要提交交易,请调用 transaction.Complete();在 SaveChanges() 之后。
Part of the answer will be that DbContext.SaveChanges() is automatically transactional, so in many cases, you will not need to roll your own transactions. What is your scenario, and why do you think that you need to manually do transactions?
If you decide you need them, wrap SaveChanges in a transaction:
If you run Profiler, you will note that the transaction is rolled back once you leave the using{} block. To commit your transaction, call transaction.Complete(); after SaveChanges().