2009-01-16 54 views
11

Đang cố gắng xử lý khung pháp nhân ở đây và tôi đang gặp một số va chạm tốc độ ... Tôi có phương thức Get() hoạt động tốt và có được thử nghiệm, nhưng phương pháp xoá của tôi không được làm việc:Lỗi: Không thể xóa đối tượng vì không tìm thấy đối tượng trong ObjectStateManager

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

nhưng tôi nhận được lỗi sau: lỗi: các đối tượng không thể xóa được vì nó không được tìm thấy trong các ObjectStateManager.

Tôi đã chạy trình gỡ lỗi và đối tượng bên trong DeleteObject là chính xác ... tôi đang thiếu gì? Cảm ơn bạn.

Trả lời

16

Mỗi đối tượng EF được liên kết chặt chẽ với người quản lý (vì muốn có từ tốt hơn) đã tạo ra nó. hoặc liên kết nào. Vì bạn không vượt qua db để phương pháp Get của mình, tôi giả định rằng Get đã sử dụng riêng nó J1Entities hoặc đối tượng đã được tạo độc lập (có thể là không được deserialized).

Để xóa nó, nó phải biết về nó đầu tiên. Điều đó có nghĩa là gắn một đối tượng cho người quản lý - nhưng trong trường hợp này, có vẻ như một tùy chọn dễ dàng hơn là chỉ cần chuyển db vào Get, để Get được thực hiện trong cùng một ngữ cảnh (vì db sẽ tự động đính kèm các đối tượng nó tạo ra chính nó).

+0

Hoàn hảo ... Tôi đã tìm ra điều gì đó đơn giản ... :) – naspinski

Các vấn đề liên quan