2012-02-22 46 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); 

你的第二个问题 - 你需要附加实体和设置状态,如果你是分离的场景(你的实体实例没有通过相同的上下文实例作为加载工作它被保存)。

相关问题