C# EF4-Context.Entry不是';无法更改实体状态

C# EF4-Context.Entry不是';无法更改实体状态,c#,.net,entity-framework,entity-framework-4,C#,.net,Entity Framework,Entity Framework 4,我使用EDMX模式作为上下文。在以前的一个项目中,我没有使用模式,我可以这样更改实体状态: public void SaveProduct(Product product) { if (product.ProductID == 0) context.Products.Add(product); else context.Entry(product).State = EntityState.Modified; context.SaveChan

我使用EDMX模式作为上下文。在以前的一个项目中,我没有使用模式,我可以这样更改实体状态:

public void SaveProduct(Product product)
{
    if (product.ProductID == 0)
        context.Products.Add(product);
    else
        context.Entry(product).State = EntityState.Modified;
    context.SaveChanges();
}
但是在这个项目中,我在intellisense中看不到
.Entry
(如果我只是键入它,它不会建议名称空间引用)

我试图修改一个实体并保存它。它工作正常

所以我的两个问题是: -为什么
.Entry
不再是我的智能感知?
-我们真的需要用持久性上下文更改实体状态吗?或者我们可以依靠.Net来正确地更改实体状态吗?

我猜以前您使用的是DbContext API,但现在您使用的是ObjectContext API-这是使用EF的两种不同方法,每种方法都有自己的方法。检查是否有以下内容(ObjectContext API):

对于第二个问题,如果您正在处理分离的场景,则需要附加实体并设置状态(您的实体实例在保存时并不是由同一上下文实例加载的)

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