LINQ和处理回滚

时间:2011-01-19 07:57:14

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

我有一个图片上传处理程序(.ASHX)。我将图像元数据存储在数据库中,并将图像从该条目的id命名为数据库。我在调用SubmitChanges后使用LINQ并获取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();
    }
}

由于

1 个答案:

答案 0 :(得分:0)

部分正确。

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