9

SaveChanges()必要与功能导入(存储过程)?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? 
} 
+8

你试过了吗? :) – AndrewC

+0

我有。这似乎没有任何区别。底层的存储过程被调用。也许我应该改述一下,并问:“我应该叫SaveChanges()?” - 如果我应该或不应该,由于缺乏文档,我不清楚。 – Didaxis

回答

11

根据MSDNSaveChanges

仍然存在的所有更新到数据源和复位改变 对象上下文跟踪。

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