2012-02-22 44 views
3

我使用EDMX模式作爲我的上下文。在以前的項目中,我沒有用一個模式,我可以改變實體狀態是這樣的:EF4 - Context.Entry不可用於更改實體狀態

public void SaveProduct(Product product) 
{ 
    if (product.ProductID == 0) 
     context.Products.Add(product); 
    else 
     context.Entry(product).State = EntityState.Modified; 
    context.SaveChanges(); 
} 

但在這個項目中,我沒有看到我的智能感知.Entry(它不會建議一個命名空間參考,如果我只是鍵入它)。

我試圖修改一個實體並保存它。它工作正常。

所以我的兩個問題是: - 爲什麼.Entry不在我的智能感知了嗎? - 我們是否真的需要使用持久性上下文來更改實體狀態,還是可以依靠.Net來正確地執行該操作?

回答

6

我猜你以前使用過DbContext API,但現在你使用的是ObjectContext API--這是兩種不同的方式來使用EF,每種方法都有自己的方式來完成它。檢查您是否有這樣的(ObjectContext的API):

context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified); 

你的第二個問題 - 你需要附加實體和設置狀態,如果你是分離的場景(你的實體實例沒有通過相同的上下文實例作爲加載工作它被保存)。

相關問題