我使用EDMX模式作为我的上下文。在之前的项目中,我没有使用模式,我可以像这样更改实体状态:
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来正确地做到这一点吗?
发布于 2012-02-23 00:48:12
我猜你之前用的是DbContext接口,但现在你用的是ObjectContext接口--这是使用EF的两种不同方式,每种方式都有自己的方式。检查您是否有这个(ObjectContext应用编程接口):
context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified);对于您的第二个问题-如果您正在使用分离的场景,则需要附加实体并设置状态(您的实体实例不是由保存时相同的上下文实例加载的)。
https://stackoverflow.com/questions/9398977
复制相似问题