我需要将记录存储在数据库的多个依赖表中,在每个HTTP请求中部分更新到Asp.net MVC Action。
为此,我需要跨多个页面请求使用Sql Server Transaction,这些请求正在点击Asp.Net MVC Action Methods。
如何做到这一点?
答案 0 :(得分:1)
您可以将数据存储在对象中,但尚未准备好保存。
一些例子:
1)将数据存储在session中的对象中。
2)您可以创建一个Manager类(单个对象在您的应用程序的整个生命周期中都存在),这将允许您跨多个请求收集数据。如果您使用IOC容器,则只需注册为单例。
3)您可以将数据客户端存储在cookie或本地存储中,并在准备就绪时将所有数据推送到另一个请求。
然后,当您拥有完整的数据集时,您可以按正常方式将其保存到数据库中。
修改强>
如果您坚持使用事务,则可以使用相同的原则,只需在会话中保留事务或数据库上下文而不是数据。但是,我会建议不要执行长时间运行的事务。这可能会导致您的桌子出现令人讨厌的锁定。是的,你可以玩隔离级别,但我相信有更好的解决方案。
消息总线如何... MassTransit代替Saga?当传奇完成后,您只需将其数据传输到数据库即可。