none
Añadir una relacion entre dos tablas en el contexto. Add crea registro nuevo y no uno intermedio. RRS feed

  • Pregunta

  • Buenos días, os comento el escenario en el que estoy trabajando y su problematica.

     

    En la BBDD tengo tres tablas. Alumnos, Asignaturas y AlumnosAsignatura. Pues bien cuando yo estoy creando una asignatura nueva y le añado alumnos (ya existentes) lo que hace al guardar el contexto es añadirme un registro en la tabla intermedia a un alumno nuevo que crea, sin embargo yo le he agregado a la Asignatura un Alumnos existente.

     

     public int Create(beAsignatura ibeAsignatura, int pidAlumno)
            {
                try
                {
                    using (contextERP ctx = new contextERP())
                    {
                        ctx.ContextOptions.ProxyCreationEnabled = false;

                        ctx.Asignaturas.AddObject(ibeAsignatura);

                        //Agregamos el alumno

                        var queryAlumno = from r in ctx.Alumnos
                                            where r.PidAlumno == pidAlumno
                                            select r;
                        beAlumno ibeAlumno = queryAlumno.FirstOrDefault();

                        int intRegistros = ctx.SaveChanges();

                        if (intRegistros > 0)
                        {
                            int intPidAsignatura = ibeAsignatura.PidAsignatura;
                            return intPidAsignatura;
                        }
                        else
                        {
                            return 0;
                        }
                    }
                }
                catch (Exception ex)
                {
                       return 0;
                }
            }

     

    si os fijais en el codigo lo que hago es recoger el alumno y agregarselo a la nueva asignatura. Si me fijo en el objeto asignatura antes de hacer el savechanges tienen el alumno correcto (con el Primary Key bueno) pero al hacer el savechanges crea un registro nuevo de alumno.

    Gracias y un saludo.

     

    viernes, 23 de septiembre de 2011 8:25

Todas las respuestas