如何在Asp.Net MVC中的多个页面请求之间使用单个Sql Server事务

时间:2017-04-16 16:21:08

标签: c# sql-server asp.net-mvc-4 transactions

我需要将记录存储在数据库的多个依赖表中,在每个HTTP请求中部分更新到Asp.net MVC Action。

为此,我需要跨多个页面请求使用Sql Server Transaction,这些请求正在点击Asp.Net MVC Action Methods。

如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以将数据存储在对象中,但尚未准备好保存。

一些例子:

1)将数据存储在session中的对象中。

2)您可以创建一个Manager类(单个对象在您的应用程序的整个生命周期中都存在),这将允许您跨多个请求收集数据。如果您使用IOC容器,则只需注册为单例。

3)您可以将数据客户端存储在cookie或本地存储中,并在准备就绪时将所有数据推送到另一个请求。

然后,当您拥有完整的数据集时,您可以按正常方式将其保存到数据库中。

修改

如果您坚持使用事务,则可以使用相同的原则,只需在会话中保留事务或数据库上下文而不是数据。但是,我会建议不要执行长时间运行的事务。这可能会导致您的桌子出现令人讨厌的锁定。是的,你可以玩隔离级别,但我相信有更好的解决方案。

消息总线如何... MassTransit代替Saga?当传奇完成后,您只需将其数据传输到数据库即可。