none
No puedo borrar un registro de una tabla ? RRS feed

  • Pregunta

  • Hola a todos!

    Quiero borrar un proveedor de la table pero me sale el siguiente error : 

    System.InvalidOperationException : El objeto no se puede eliminar porque se encontró en ObjectStateManager.

    La estructura de las tablas es la siguiente: 

    y el codigo que deberia borrar es este : 

      public bool Borrar(Proveedor x)
            {
                DbBasicaContainer db = new DbBasicaContainer();
    
                try
                {
                    db.PersonasTBL.DeleteObject((Persona)this.GetOne(x.id));
                    db.SaveChanges();
                    return true;
                }
                catch (Exception ex)
                {
    
                    throw ex;
                }
                finally
                {
                    db.Dispose();
                }
            }
    
    /*******************************/
    
      public Proveedor GetOne(int i)
            {
                DbBasicaContainer db = new DbBasicaContainer();
    
                Proveedor aux = null;
                try
                {
                    
                    aux =(Proveedor)db.PersonasTBL.Where(z => z.id == i).FirstOrDefault();
                    
                }
                catch (Exception ex)
                {
    
                    throw ex;
                }
                finally
                {
                    db.Dispose();
                }
    
                return aux;
            }

    Si alguien me puede ayudar le voy a agradecer, la BD la cree a paritr del modelo de EF!

    Desde ya muchas gracias!


    Patricio Urbieta

    viernes, 31 de mayo de 2013 1:35

Respuestas

  • Hola Leo!

    ya lo soluione creo! jaja si traia a la persona, pero antes de borrarla hice db.Attach(objetoProveedor), y despues los borre.

    Gracias!!!


    Patricio Urbieta

    • Marcado como respuesta Amperssan viernes, 31 de mayo de 2013 10:23
    viernes, 31 de mayo de 2013 10:23

Todas las respuestas

  • si haces esto

    Persona person = this.GetOne(x.id) as Persona;

    puedes evaluar que obtienes la entidad ? porque quizas por el id no la esta encontrando

    usa un breakpoint y valida que la persona exista

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 31 de mayo de 2013 6:37
  • Hola Leo!

    ya lo soluione creo! jaja si traia a la persona, pero antes de borrarla hice db.Attach(objetoProveedor), y despues los borre.

    Gracias!!!


    Patricio Urbieta

    • Marcado como respuesta Amperssan viernes, 31 de mayo de 2013 10:23
    viernes, 31 de mayo de 2013 10:23
  • claro el tema del attach es necesario porque cada metodo usa un

    DbBasicaContainer db = new DbBasicaContainer();

    diferente, si usarias

    public bool Borrar(Proveedor x)
    {
    	using(DbBasicaContainer db = new DbBasicaContainer())
    	{
    		Persona aux =(Persona)db.PersonasTBL.Where(z => z.id == i).FirstOrDefault();
    		db.PersonasTBL.DeleteObject(aux);
    		db.SaveChanges();
    		return true;
    	}
    }

    o sea recuoeras y eliminas bajo el mismo contexto el attach no es necesario


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 31 de mayo de 2013 14:21
  • esto me funciono perfectamente

    carrillo

    miércoles, 7 de junio de 2017 9:07