4

としましょう、私はEntityObject呼び出されたsomeProduct

//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);

3 行目が実行されると、例外がスローされます。

更新するオブジェクトのコレクション内のインデックス 0 の要素の EntityKey プロパティ値が null であるか、この 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)

更新は、ObjectContext のキャッシュを更新するために使用されます。同じオブジェクト コンテキストから選択されたエンティティが必要です。

幸運を

于 2013-01-17T14:05:10.247 に答える
0

オブジェクトにいくつかの製品を添付する必要があります。その後、オブジェクトを更新できるのはあなただけです。

この更新は、オブジェクト コンテンツに関連して以前に作成されたキャッシュを更新するために使用されます。

プロジェクトで次のコードを使用しました。それは正常に動作します。

objectContext.attach(someProduct);

于 2015-04-20T06:33:48.980 に答える