none
como eliminar mas de un registro a la vez con LINQ to Entities RRS feed

  • Pregunta

  • Hola

    Quiero eliminar los registros que cumplan una determinada condición pero solo consigo que me funcione el .Remove si lo hago de un solo registro (First)

                            using (EULENEntities entidades = new EULENEntities())

                           {
                               dynamic consulta = (from p in entidades.PROMOTORES_CENTROS
                                                    where p.CODIGO_CENTRO == centro.Codigo_Centro && p.MES == mes && p.AÑO == año
                                                    select p).ToList();


                                entidades.PROMOTORES_CENTROS.Remove(consulta);

                                entidades.SaveChanges();

                            }

    Esta consulta me falla pero si pongo .Firts solo me borra el primero que encuentra

    Alguna idea?

    Un saludo


    kintela @esekintela

    viernes, 20 de junio de 2014 12:09

Respuestas

  • Yo estaba en el mismo dilema e hice esto:

            public int EliminarSaldo(DateTime fecha)
            {
                List<TLIQ_SALDO> entSaldo = (from ts in db.TLIQ_SALDO
                                       where ts.FECHA_SALDO == fecha
                                       select ts).ToList();
                int c = 0;
                for (int i = 0; i < entSaldo.Count; i++)
                {
                    db.TLIQ_SALDO.DeleteObject(entSaldo[i]);
                    c += db.SaveChanges();
                }
                return c;
            }

    ese elimina todos los registros que se encuentresm y devuelve un int que indica cuantos registros fueron eliminados


    Roy Sillerico

    martes, 24 de junio de 2014 14:22

Todas las respuestas

  • Hola puedes probar a hacer un foreach de linq y eliminar uno a uno.

    dynamic consulta = (
    		from p in entidades.PROMOTORES_CENTROS 
    		where p.CODIGO_CENTRO == centro.Codigo_Centro && p.MES == mes && p.AÑO == año 
    		select p
    	).ToList();
    consulta.ForEach(p => entidades.PROMOTORES_CENTROS.Remove(p));
    entidades.SaveChanges();

    Saludos!!


    Víctor del Valle - http://www.vrdelvalle.net

    • Propuesto como respuesta By AlaN viernes, 20 de junio de 2014 13:48
    viernes, 20 de junio de 2014 12:16
  • Hola

    Lo acabo de intentar y me da un error en la sentencia del bucle que dice tal que así:

    No se puede usar una expresión lambda como argumento para una operación enviada de forma dinámica sin convetrirla primero en un tipo delegado o de un árbol de expresión

    Que no consigo descifrar vamos...

    Muchas gracias y sigo intentandolo

    Un saludo


    kintela @esekintela

    martes, 24 de junio de 2014 10:38
  • Yo estaba en el mismo dilema e hice esto:

            public int EliminarSaldo(DateTime fecha)
            {
                List<TLIQ_SALDO> entSaldo = (from ts in db.TLIQ_SALDO
                                       where ts.FECHA_SALDO == fecha
                                       select ts).ToList();
                int c = 0;
                for (int i = 0; i < entSaldo.Count; i++)
                {
                    db.TLIQ_SALDO.DeleteObject(entSaldo[i]);
                    c += db.SaveChanges();
                }
                return c;
            }

    ese elimina todos los registros que se encuentresm y devuelve un int que indica cuantos registros fueron eliminados


    Roy Sillerico

    martes, 24 de junio de 2014 14:22
  • Hola  Roy

    Estoy intentando aplicar tu código en mi proyecto pero me dice que no se encuentra el método DeleteObject()

    Entiendo que te refieres a Remove ya que con Remove me funciona perfectamente

    Un saludo y Muchas Gracias


    kintela @esekintela

    martes, 24 de junio de 2014 16:29
  • Creo que eso del Delete y Remove depende de la versión del framework que se maneja, porque a mi no me reconoce el Remove.

    Si alguien conoce de que depende cuál método hay que utilizar o por qué a uno le reconoce uno y a otros otro, agradecería la orientación.


    Roy Sillerico

    martes, 24 de junio de 2014 16:34