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上有其他未保存的更改)。