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

时间:2011-10-11 13:35:29

标签: c# .net entity-framework stored-procedures entity-framework-4

函数导入(存储过程)是否需要 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?
}

1 个答案:

答案 0 :(得分:12)

根据MSDNSaveChanges

  

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

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