2016-05-09 11 views
1

EF6.0を使用してエンティティを削除しようとしていますが、状況に陥って例外が発生しています。以下は、私は私にこのエンティティを与える別のロジックを持っている例外Entity Framework 6.0でエンティティを削除する

_context.Images.Remove(image) 

に実行しているコードスニペットです。私は例外の下になっています:

ObjectStateManagerにオブジェクトが見つかりませんでしたので、オブジェクトを削除できません。

エンティティが別のコンテキストで取得され、別のコンテキストで削除されているので、私はこのエラーが発生していることがわかりました。私はエンティティを再度取得したくありません。フェッチされたエンティティ自体を使用したいが、そうする方法が見つからない。

+0

* image * from where?それはコンテキストからのメソッドまたはエンティティのパラメータですか? –

答えて

2

あなたがする必要があるのは、コンテキストへのエンティティAttach()です。これにより、オブジェクトのDbContextに関する知識が得られます。あなたのエンティティが有効なIDを持っている限り、あなたは大丈夫でしょう。

ここでは、何をする必要があるかを知るための擬似コードを示します。

using (var context = new MyDbContext()) 
{ 
    // Make your context aware of the object. 
    context.Images.Attach(image); 

    // Now delete the object. It will change the internal 
    // state so that it will be deleted. 
    context.Images.Remove(image); 

    // Finally, save your changes 
    context.SaveChanges(); 
} 
+1

または 'context.Entry(image).State = System.Data.Entity.EntityState.Deleted;'のみです。これは画像を 'Deleted'状態にします。 –

+0

添付して削除しようとしましたが、今は 'context.SaveChanges'で例外が発生しています。例外は 'Store update、insert、またはdelete文が予期しない行数(0)に影響を与えたということです。エンティティがロードされてからエンティティが変更または削除された可能性があります。 – kaysush

+0

'image'はデータベースで有効な正しいIDを持っていますか? – krillgar

関連する問題