EF4-上下文.条目不是';t可用于更改实体状态

本文关键字:用于 状态 实体 上下文 EF4- | 更新日期: 2023-09-27 18:25:22

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

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

但在这个项目中,我在intelligense中看不到.Entry(如果我只是键入它,它也不会建议使用名称空间引用)。

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

所以我的两个问题是:-为什么.Entry不在我的智能范围内了?-我们真的需要用持久上下文来更改实体状态吗?或者我们可以依靠.Net来正确地做到这一点吗?

EF4-上下文.条目不是';t可用于更改实体状态

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

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

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