linq - LINQ和处理回滚

标签 linq linq-to-sql error-handling rollback

我有一个图片上传处理程序(.ASHX)。我将图像元数据存储在数据库中,并根据该条目的ID将图像命名为数据库。我正在使用LINQ,并在调用SubmitChanges之后找回ID。然后,我使用该ID保存图像。如果File.SaveAs失败,我显然想回滚插入。我下面的代码正确吗?

using (UserDataContext userDataContext = new UserDataContext())
{
    GalleryImage galleryImage = new GalleryImage();
    galleryImage.metaName = "some meta stuff";
    userDataContext.GalleryImages.InsertOnSubmit(galleryImage);
    System.Data.Common.DbTransaction transaction = userClassContext.Transaction;
    userDataContext.SubmitChanges();
    try
    {
        string targetPath = "somepath/" + galleryImage.Id;
        file.SaveAs(targetFilePath);
    }
    catch
    {
        transaction.Rollback();
    }
}

谢谢

最佳答案

这是部分正确的。

但是,您需要在调用SubmitChanges()之前显式创建一个事务。

关于linq - LINQ和处理回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4732956/

相关文章:

c# - 何时使用 .First 以及何时将 .FirstOrDefault 与 LINQ 一起使用?

c# - 在 C# 中使用 xdocument 从 xml 文件中提取特定数据

c# - Linq-to-SQL ToDictionary

.net - LINQ 到 SQL : Mapping a subset of an association

javascript - 无法使用javaScript在HTML中打印特定字符串

c# - 迁移到 dbcontext LINQ where 子句字符串参数

linq-to-sql - 使用 LINQ 查询和基于两个参数的顺序连接两个表

C# Linq to SQL 包含安全的 sql 注入(inject)

ajax - 如何将ajax请求失败链接到jqXHR状态和错误类型?

ruby - 从Ruby文件将数组插入Postgres数据库