函数导入(存储过程)是否需要SaveChanges() ?

本文关键字:SaveChanges 是否 存储过程 函数 导入 | 更新日期: 2023-09-27 18:10:52

SaveChanges() 对于函数导入(存储过程)是必需的吗?

的例子:

void foo(Product product)
{
    // AddProduct is a function import of a stored procedure
    entities.AddProduct(product.Name, product.Price, product.Description);
    entities.SaveChanges(); // Is this necessary?
}

函数导入(存储过程)是否需要SaveChanges() ?

根据MSDN, SaveChanges

将所有更新保存到数据源并重置更改跟踪对象上下文。

也就是说,对于附加到上下文并且您已经添加、修改或删除的任何实体,EF将生成相应的SQL代码并在数据库中运行它。在您的示例中,您已经通过调用AddProduct存储过程直接对数据库运行SQL代码(或多或少)。因此,在您的情况下,SaveChanges不会做任何事情,也没有必要(除非您在ObjectContext上有其他未保存的更改)。