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来正确地做到这一点吗?
我猜以前你使用的是DbContext API,但现在你使用的却是ObjectContext API-这是两种不同的EF使用方式,每种方式都有自己的方法。检查你是否有这个(ObjectContext API):
context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified);
对于第二个问题,如果您正在处理分离的场景,则需要附加实体并设置状态(您的实体实例不是由保存时的同一上下文实例加载的)。