我需要在.Net Web应用程序中执行一系列文件系统和数据库操作,如果发生故障,则会回滚所有内容。操作是:
我可以使用3.5框架中的可用类在单个事务中包装这些操作吗?我应该手动使用try catch块和回滚操作吗?
答案 0 :(得分:1)
我可以使用3.5中的可用类在单个事务中包装这些操作 框架?
不,而且没有任何其他技术,因为你的链接很薄弱。
1.使用HttpPostedFile
将多页tiff文件上传到服务器2.将发布文件的记录插入数据库
3.将多个tiff中的单个图像作为服务器上的单个文件进行处理和保存
4.将单个图像的记录插入数据库
2-4可以在现代窗口的事务中轻松完成 - NTFS可以参与交易。
你的问题是1. 1是不可能的,因为 - 注意 - HTTP没有交易的概念。如果上传是从您的服务器发生的,您可以在上传CRM(补偿资源管理器)中上传插件,但是您需要能够通过HTTP Too删除它们以防回滚和(完全但是可选)上传它们但不是在你提交之前可见。这是因为API支持它 - 写起来很简单(.NET中的CRM非常简单),否则你就会死路一条或者做出妥协。
如果你谈到上传到你的服务器然后在交易中处理,技术上要正确地处理多图像上传你必须决定transaciotnal contro所在的位置。上传必须有一个合适的API来启动一个事务,用事务令牌进行上传,然后在完成所有上传时提交(因为只有处理可以开始)。这对于编程来说是微不足道的 - 甚至在大多数情况下都不使用TPM,因为您可以在处理过程中滚动逻辑事务。但是如果你愿意的话,CRM可以在回滚的情况下再次处理必要的更改。
答案 1 :(得分:0)
尝试以下内容:
using (TransactionScope scope = new TransactionScope())
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
// Do all work here...
}
catch (Exception ex)
{
// Delete files
// LogError(ex);
}
}
scope.Complete();
}