11

ここで Entity Framework のハンドルを取得しようとすると、スピード バンプにぶつかっています...正常に動作し、テストされた Get() メソッドがありますが、私の Delete メソッドは動作しません。

   public static void Delete(string name)
    {
        J1Entities db = new J1Entities();
        db.DeleteObject(Get(name));
        db.SaveChanges();
    }

しかし、次のエラーが表示されます: エラー: オブジェクトが ObjectStateManager に見つからなかったため、オブジェクトを削除できません。

デバッガーを実行しましたが、DeleteObject 内のオブジェクトは正しいです...何が欠けていますか? ありがとうございました。

4

1 に答える 1

17

各 EF オブジェクトは、それを作成したマネージャー (より適切な言葉が必要なため) に密接に関連付けられています。または関連付けられているもの。メソッドに渡さないので、独自の を使用したか、オブジェクトがスタンドアロンで作成された (おそらく逆シリアル化された)と思いdbます。GetGetJ1Entities

それを削除するには、まずそれについて知る必要があります。これは、マネージャにオブジェクトをアタッチすることを意味する場合がありますが、この場合、同じコンテキストで実行されるようdbGet、に渡す方が簡単なオプションのようです(それ自体が作成したオブジェクトを自動的にアタッチするため)。Getdb

于 2009-01-16T07:25:16.643 に答える