Error: el objeto no se puede eliminar porque no se encontró en el ObjectStateManager

c# entity-framework linq-to-entities

Pregunta

Intento obtener un identificador de Entity Framework aquí y estoy alcanzando algunos baches de velocidad ... Tengo un método Get () que funciona bien y se ha probado, pero mi método de eliminación no funciona:

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

Pero me aparece el siguiente error: Error: el objeto no se puede eliminar porque no se encontró en el ObjectStateManager.

Ejecuté el depurador, y el objeto dentro de DeleteObject es correcto ... ¿qué me falta? Gracias.

Respuesta aceptada

Cada objeto EF está estrechamente asociado al administrador (a falta de una palabra mejor) que lo creó. oa la que se haya asociado. Dado que no pasa db a su método Get , asumo que Get ha usado sus propias J1Entities , o que el objeto se ha creado de forma independiente (quizás deserializado).

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



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow