实体框架和交易范围

问题描述

| 我说我有以下三种方法
DeleteProduct(int productId);
DeleteProductAttributes(int productId);
DeleteProductManufacturers(int productId);
我也有一个全局(在类内)对象上下文称它为_context。 我希望这些方法中的每一种都能独立工作,因为我需要在其他地方使用它们。但是,在删除产品方法中,我希望能够使用事务作用域,以防万一失败并留下没有属性或制造商的产品。所以我的DeleteProduct方法目前看起来像这样
public void DeleteProduct(int productId)
{
    if (productId == 0)
        return;
    Product product = GetProductById(productId);
    DeleteProductAttributes(productId);
    DeleteProductManufacturers(productId);
    _context.Products.DeleteObject(product);
}
有人在不破坏我上面的结构的情况下对我如何做到有任何见解吗? 任何帮助,不胜感激。 谢谢     

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...