实体框架和事务范围

时间:2011-06-15 15:00:46

标签: entity-framework transactionscope

我说我有以下三种方法:

DeleteProduct(int productId);
DeleteProductAttributes(int productId);
DeleteProductManufacturers(int productId);

我还有一个全局(在类内)Object上下文调用它_context。 我希望这些方法中的每一种都可以独立工作,因为我需要在其他地方使用它们。但是在删除产品方法中,我希望能够使用事务范围,以防出现故障,我得到的产品没有属性或制造商。所以我的DeleteProduct方法目前看起来像这样

public void DeleteProduct(int productId)
{
    if (productId == 0)
        return;
    Product product = GetProductById(productId);
    DeleteProductAttributes(productId);
    DeleteProductManufacturers(productId);
    _context.Products.DeleteObject(product);
}

有没有人能够在不破坏我上面的结构的情况下如何做到这一点?

任何帮助都非常感激。

感谢

1 个答案:

答案 0 :(得分:3)

如果所有三种方法都使用_context字段中存储的相同上下文,则它们已经在事务中。所有数据修改(包括删除)仅在上下文中标记,并且仅在您调用SaveChanges时才在数据库中执行。 SaveChanges始终在事务中进行所有修改。