是否有可能在調用DbContext.SaveChanges()之後回滾數據庫?在MVC 3中的.NET MVC 3在Dbcontext中回滾
我的實體類:
public class BipEntities : DbContext
{
public DbSet<Page> Pages { get; set; }
public DbSet<ImageFile> ImageFiles { get; set; }
}
我試圖做的是插入一個鏡像文件記錄到數據庫,然後使用自動遞增的ID作爲圖像文件名,圖像文件保存到某個地方其他。 當System.IO失敗時,我想回滾數據庫。
BipEntities db = new BipEntities();
db.Database.Connection.Open();
DbTransaction tranx = db.Database.Connection.BeginTransaction();
ImageFile img = new ImageFile { CreatedAt = DateTime.Now };
db.ImageFiles.Add(img);
db.SaveChanges();
string filename = "img" + img.Id.ToString() + ".png";
try {
//Works on system IO to process file
tranx.Commit();
} Catch (Exception) {
tranx.Rollback();
}
db.Database.Connection.Close();
然而,上面的代碼給了我此錯誤消息:
EntityConnection can only be constructed with a closed DbConnection.
爲什麼不使用guid作爲文件名,並將其作爲分隔列添加到數據庫中,而不是先保存文件並將其插入數據庫中。沒有必要進行交易,只需嘗試/趕上。 – frennky 2011-12-28 12:13:46
@frennky,感謝您的建議,但我想找出答案無論如何:) – 2011-12-28 12:54:35