none
Como puedo actualizar y eliminar datos de una tabla de muchos a muchos RRS feed

  • Pregunta

  • Buenas noches, escribo en esta oportunidad porque tengo una duda, como puedo actualizar una tabla que es el resultado de la relación muchos a muchos, lo estaba haciendo así pero creo que esta muy malo porque no me funciona.

                                pagoConcepto = context.ConceptoPagos.Where(x => x.conceptoId == conceptoID).ToList();
                                pagoConcepto.ConceptoPagoRols.Clear();
    
                                var pagoRole = roles;
                                if (pagoRole != null)
                                {
                                    foreach (var item in pagoRole)
                                    {
                                        ConceptoPagoRol rol = new ConceptoPagoRol()
                                        {
                                            rolID = Convert.ToInt32(item.ToString()),
                                            conceptoId = conceptoID,
                                            Cr_created_at = DateTime.Now,
                                            Cr_updated_at = DateTime.Now
                                        };
                                        context.ConceptoPagoRols.Add(rol);
                                    }
                                }

    Lo que quiero es que cuando seleccione un rol si lo agrego fino pero cuando lo edito, es decir, que lo elimine de la lista del concepto lo pueda eliminar de la tabla pero noc como podria hacerlo.

    Que me recomiendan hacer?

    miércoles, 20 de febrero de 2019 3:02

Todas las respuestas

  • hola

    Veo que no funciona porque te esta faltando la linea

    context.SaveChanges();

    sin esta no va a ejecutar las operaciones contra la db, solo quedara en memoria la asignacion

    Veo que esta la tabla intermedia ConceptoPagoRol, pero esto difiere si es entity framework 6 a entity framework core, es muy distinto.

    En EF6 la tabla intermedia no se asocia a una entidad, por lo tanto ConceptoPagoRol no deberia estar. Ahora si es EF Core en este caso si debes declarar la tabla intermedia asociandola a una tabla, seria correcto tener ConceptoPagoRol

    Para eliminar simplemente deberias quitar la entidad de la coleccion

    Configuring Many To Many Relationships in Entity Framework Core

    Relationships

    Si analiza los ejemplos de github donde publique sobre este tema en un evento

    EntityFrameworkCoreMappings

    veras que se puede eliminar indicnado las keys intervinientes en la relacion

    ConceptoPagoRol rol = new ConceptoPagoRol()
    {
      rolID = Convert.ToInt32(item.ToString()),
      conceptoId = conceptoID,
    };
    context.Remove(rol);
    context.SaveChanges();

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 21 de febrero de 2019 19:11