4

可以说,我有一个EntityObjectsomeProduct

//Get the object
Product someProduct = someObjectContext.Product.First();

//At runtime at some point, recreate the ObjectContext
someObjectContext = new SomeObjectContext();

//Try to refresh someProduct on the new ObjectContext
someObjectContext.Refresh(RefreshMode.StoreWins, someProduct);

当第三行执行时,它会抛出一个异常:

要刷新的对象集合中索引 0 处的元素具有空 EntityKey 属性值或未附加到此 ObjectStateManager。

这是刷新EntityObject新创建的正确方法ObjectContext吗?

编辑:

new 的原因ObjectContext是为了刷新所有的dirty EntityObjects

4

3 回答 3

2

在刷新之前先将实体附加到上下文中,

someObjectContext.Products.Attach(someProduct);

或者

someObjectContext.Set<Product>().Attach(someProduct);

那应该这样做。

于 2013-01-17T14:00:07.733 回答
1

由于 someProduct 是使用不同的 ObjectContext 检索的,因此您需要使用someObjectContext.Attach(someProduct).

refresh用于刷新ObjectContext的缓存,它需要从同一个Object Context中选择一个实体。

祝你好运

于 2013-01-17T14:05:10.247 回答
0

您应该将某些产品附加到对象,然后只有您可以刷新对象。

此刷新用于刷新之前创建的与对象内容相关的缓存。

我在项目中使用了以下代码。它工作正常。

objectContext.attach(someProduct);

于 2015-04-20T06:33:48.980 回答