2009-01-16 24 views
11

Intentando obtener un control sobre Entity Framework aquí y estoy golpeando algunos baches de velocidad ... Tengo un método Get() que funciona bien y tiene ha probado, pero mi método Delete no está funcionando:Error: No se puede eliminar el objeto porque no se encontró en ObjectStateManager

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

pero me da el siguiente error: de error: el objeto no se puede eliminar porque no se encontró en el ObjectStateManager.

Ejecuto el depurador, y el objeto dentro del DeleteObject es correcto ... ¿qué me estoy perdiendo? Gracias.

Respuesta

16

Cada objeto EF está estrechamente asociado al administrador (a falta de una mejor palabra) que lo creó. o a la que ha sido asociado. Como no pasa db a su método Get, supongo que Get ha usado su propio J1Entities, o el objeto se ha creado de forma independiente (tal vez deserializado).

Para eliminarlo, debe saberlo primero. Eso podría significar por adjuntar un objeto al administrador, pero en este caso, parece una opción más sencilla es pasar db en Get, por lo que el Get se realiza en el mismo contexto (ya que db adjuntará automáticamente objetos que se crea a sí mismo).

+0

Perfecto ... Pensé que era algo simple ... :) – naspinski

Cuestiones relacionadas