示例#1
0
        public void AñadirAsignatura(int idAsig, string nomAsig)
        {
            using (bd_notasAlumnosEntities contextoDeObjs =
                       new bd_notasAlumnosEntities())
            {
                // Crear una nueva asignatura
                asignatura asig = new asignatura()
                {
                    id_asignatura = idAsig,
                    nombre        = nomAsig
                };

                // Añadirla al conjunto de entidades asignaturas
                contextoDeObjs.asignaturas.Add(asig);

                // Enviar los cambios a la base de datos
                try
                {
                    contextoDeObjs.SaveChanges();
                    MessageBox.Show("Cambios realizados");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.InnerException.Message);
                }
            }
        }
示例#2
0
        public void AñadirAlumno(int idAlum, string nomAlum)
        {
            using (bd_notasAlumnosEntities contextoDeObjs =
                       new bd_notasAlumnosEntities())
            {
                // Crear un nuevo objeto alumno
                alumno alum = new alumno()
                {
                    id_alumno = idAlum,
                    nombre    = nomAlum
                };

                // Añadirlo al conjunto de entidades alumnos
                contextoDeObjs.alumnos.Add(alum);
                // O bien:
                //contextoDeObjs.Entry(alum).State = EntityState.Added;

                // Enviar los cambios a la base de datos
                try
                {
                    contextoDeObjs.SaveChanges();
                    MessageBox.Show("Cambios realizados");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.InnerException.Message);
                }
            }
        }
示例#3
0
        public void BorrarAlumno(int idAlum)
        {
            using (bd_notasAlumnosEntities contextoDeObjs =
                       new bd_notasAlumnosEntities())
            {
                // Consulta para obtener los objetos secundarios de idAlum
                var consulta1 =
                    from alum in contextoDeObjs.alums_asigs
                    where alum.id_alumno == idAlum
                    select alum;

                if (consulta1.Count() != 0)
                {
                    foreach (var al_as in consulta1)
                    {
                        // Borrar los objetos secundarios
                        contextoDeObjs.alums_asigs.Remove(al_as);
                        // O bien:
                        //contextoDeObjs.Set<alum_asig>().Remove(al_as);
                        // O bien:
                        //contextoDeObjs.Entry(al_as).State = EntityState.Deleted;
                    }
                }

                // Consulta para obtener el objeto primario idAlum
                var consulta2 =
                    from alum in contextoDeObjs.alumnos
                    where alum.id_alumno == idAlum
                    select alum;

                if (consulta2.Count() != 0)
                {
                    foreach (var alum in consulta2)
                    {
                        // Borrar el objeto primario
                        contextoDeObjs.alumnos.Remove(alum);
                    }
                }

                if (consulta1.Count() == 0 && consulta2.Count() == 0)
                {
                    MessageBox.Show("La consulta no contiene elementos");
                    return;
                }
                // Enviar los cambios a la base de datos
                try
                {
                    contextoDeObjs.SaveChanges();
                    MessageBox.Show("Cambios realizados");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.InnerException.Message);
                }
            }
        }
示例#4
0
 public BindingListView <alumno> ObtenerAlumnos()
 {
     using (bd_notasAlumnosEntities
            contextoDeObjs = new bd_notasAlumnosEntities())
     {
         BindingListView <alumno> vista;
         vista = new BindingListView <alumno>(contextoDeObjs.alumnos.ToList());
         return(vista);
     }
 }
示例#5
0
 public float ObtenerNota(int idAlumno, int idAsignatura)
 {
     using (bd_notasAlumnosEntities
            contextoDeObjs = new bd_notasAlumnosEntities())
     {
         var alumAsigs =
             from al_as in contextoDeObjs.alums_asigs
             where al_as.id_alumno == idAlumno && al_as.id_asignatura == idAsignatura
             select al_as.nota;
         return(alumAsigs.First());
     }
 }
示例#6
0
        public void BorrarAsignatura(int idAsig)
        {
            using (bd_notasAlumnosEntities contextoDeObjs =
                       new bd_notasAlumnosEntities())
            {
                // Consulta para obtener los objetos secundarios de idAsig
                var consulta1 =
                    from asig in contextoDeObjs.alums_asigs
                    where asig.id_asignatura == idAsig
                    select asig;

                if (consulta1.Count() != 0)
                {
                    foreach (var al_as in consulta1)
                    {
                        // Borrar los objetos secundarios
                        contextoDeObjs.alums_asigs.Remove(al_as);
                    }
                }

                // Consulta para obtener el objeto primario idAsig
                var consulta2 =
                    from asig in contextoDeObjs.asignaturas
                    where asig.id_asignatura == idAsig
                    select asig;

                if (consulta2.Count() != 0)
                {
                    foreach (var asig in consulta2)
                    {
                        // Borrar el objeto primario
                        contextoDeObjs.asignaturas.Remove(asig);
                    }
                }

                if (consulta1.Count() == 0 && consulta2.Count() == 0)
                {
                    MessageBox.Show("La consulta no contiene elementos");
                    return;
                }

                // Enviar los cambios a la base de datos
                try
                {
                    contextoDeObjs.SaveChanges();
                    MessageBox.Show("Cambios realizados");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.InnerException.Message);
                }
            }
        }
示例#7
0
        public void AñadirAlumnoAsignatura(int idAlum, int idAsig)
        {
            using (bd_notasAlumnosEntities contextoDeObjs =
                       new bd_notasAlumnosEntities())
            {
                // Consulta para obtener el alumno a matricular
                var consulta1 = from alum in contextoDeObjs.alumnos
                                where alum.id_alumno == idAlum
                                select alum;

                // Consulta para obtener la asignatura de la que se va a matricular
                var consulta2 = from asig in contextoDeObjs.asignaturas
                                where asig.id_asignatura == idAsig
                                select asig;

                if (consulta1.Count() == 0 || consulta2.Count() == 0)
                {
                    MessageBox.Show("El alumno o la asignatura no existen");
                    return;
                }
                alumno     alumno     = consulta1.First();
                asignatura asignatura = consulta2.First();

                // Crear un nuevo objeto alum_asig
                alum_asig al_as = new alum_asig()
                {
                    id_alumno     = idAlum,
                    id_asignatura = idAsig,
                    nota          = 0.0F
                };

                // Establecer las relaciones
                al_as.alumno     = alumno;         // N:1
                al_as.asignatura = asignatura;     // N:1
                // O bien:
                alumno.alums_asigs.Add(al_as);     // 1:N
                asignatura.alums_asigs.Add(al_as); // 1:N

                // Añadir el nuevo objeto al conjunto de entidades alums_asigs
                contextoDeObjs.alums_asigs.Add(al_as);

                // Enviar los cambios a la base de datos
                try
                {
                    contextoDeObjs.SaveChanges();
                    MessageBox.Show("Cambios realizados");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.InnerException.Message);
                }
            }
        }
示例#8
0
 public BindingListView <alum_asig> ObtenerAlumAsig(int idAlumno, int idAsignatura)
 {
     using (bd_notasAlumnosEntities
            contextoDeObjs = new bd_notasAlumnosEntities())
     {
         var alumAsig =
             from al_as in contextoDeObjs.alums_asigs
             where al_as.id_alumno == idAlumno && al_as.id_asignatura == idAsignatura
             select al_as;
         BindingListView <alum_asig> vista;
         vista = new BindingListView <alum_asig>(alumAsig.ToList());
         return(vista);
     }
 }
示例#9
0
 public BindingListView <asignatura> ObtenerAsignaturas(int idAlumno)
 {
     using (bd_notasAlumnosEntities
            contextoDeObjs = new bd_notasAlumnosEntities())
     {
         var asigs =
             from al_as in contextoDeObjs.alums_asigs
             where al_as.id_alumno == idAlumno
             select al_as.asignatura;
         BindingListView <asignatura> vista;
         vista = new BindingListView <asignatura>(asigs.ToList());
         return(vista);
     }
 }
示例#10
0
        public void TestEstadoEntidades(int idAlum, int idAsig)
        {
            using (bd_notasAlumnosEntities
                   contextoDeObjs = new bd_notasAlumnosEntities())
            {
                // Consulta para obtener la fila a modificar
                var consulta1 =
                    from al_as in contextoDeObjs.alums_asigs
                    where al_as.id_alumno == idAlum &&
                    al_as.id_asignatura == idAsig
                    select al_as;

                // Ejecutar la consulta y cambiar la nota
                consulta1.First().nota = consulta1.First().nota + 0.5F;
                // Entidades modificadas
                var entidadesModificadas =
                    from objDbEntityEntry in contextoDeObjs.ChangeTracker.Entries()
                    where objDbEntityEntry.State == EntityState.Modified
                    select objDbEntityEntry;
                // Valores originales y actuales
                foreach (var objDbEE in entidadesModificadas)
                {
                    string info =
                        "Tipo del objeto de seguimiento: " + objDbEE.ToString() +
                        "\nID alumno: " + (objDbEE.Entity as alum_asig).id_alumno +
                        "\nID asignatura: " + (objDbEE.Entity as alum_asig).id_asignatura +
                        "\nValores originales -> actuales:\n";
                    DbPropertyValues actuales   = objDbEE.CurrentValues;
                    DbPropertyValues originales = objDbEE.OriginalValues;
                    int c = actuales.PropertyNames.Count();
                    for (int i = 0; i < c; i++)
                    {
                        string prop = actuales.PropertyNames.ElementAt(i);
                        info += "\t" + originales.GetValue <object>(prop) + " -> " +
                                actuales.GetValue <object>(prop) + "\n";
                    }
                    MessageBox.Show(info);
                }
                // Salvar los cambios en la base de datos
                try
                {
                    contextoDeObjs.SaveChanges();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
示例#11
0
    protected void btConsultarNota_Click(object sender, EventArgs e)
    {
        // Obtener datos de los controles del formulario
        int idAlum = Convert.ToInt32(ctDni.Text);
        int idAsig = Convert.ToInt32(lsdAsignatura.SelectedItem.Value);
        // Crear el contexto de objetos
        bd_notasAlumnosEntities contexObj = new bd_notasAlumnosEntities();
        // Consulta para obtener el nombre de idAlum y su nota en idAsig
        var consulta = from alum in contexObj.alumnos
                       from al_as in alum.alums_asigs
                       where al_as.id_alumno == idAlum &&
                       al_as.id_asignatura == idAsig
                       select new { alum.nombre, al_as.nota };

        try
        {
            // Ejecutar la consulta y obtener los datos
            if (consulta.Count() != 0)
            {
                foreach (var alum in consulta)
                {
                    // Mostrar en la página el nombre y la nota
                    etNombre.Text = "Nombre:  " + alum.nombre;
                    etNota.Text   = "Nota:  " + alum.nota;
                    etError.Text  = "";
                }
            }
            else
            {
                // El alumno buscado no se encontró
                etNombre.Text = "";
                etNota.Text   = "";
                etError.Text  = "Error: no está en acta";
            }
        }
        catch (Exception exc)
        {
            etError.Text = "Error: " + exc.Message;
        }
    }
示例#12
0
        public void ModificarNota(int idAlum, int idAsig, float notaAlum)
        {
            using (bd_notasAlumnosEntities
                   contextoDeObjs = new bd_notasAlumnosEntities())
            {
                // Consulta para obtener la fila a modificar
                var consulta =
                    from al_as in contextoDeObjs.alums_asigs
                    where al_as.id_alumno == idAlum &&
                    al_as.id_asignatura == idAsig
                    select al_as;

                if (consulta.Count() == 0)
                {
                    MessageBox.Show("La consulta no contiene elementos");
                    return;
                }

                // Ejecutar la consulta y cambiar los valores
                // de las columnas implicadas
                foreach (alum_asig al_as in consulta)
                {
                    al_as.nota = notaAlum;
                }

                // Enviar los cambios a la base de datos
                try
                {
                    contextoDeObjs.SaveChanges();
                    MessageBox.Show("Cambios realizados");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.InnerException.Message);
                }
            }
        }
示例#13
0
        public void TestConcurrencia(int idAlum, int idAsig)
        {
            using (bd_notasAlumnosEntities
                   contexto1DeObjs = new bd_notasAlumnosEntities(),
                   contexto2DeObjs = new bd_notasAlumnosEntities())
            {
                // SESIÓN 1: contexto1DeObjs
                // Consulta para obtener la fila a modificar
                var consulta1 =
                    from al_as in contexto1DeObjs.alums_asigs
                    where al_as.id_alumno == idAlum &&
                    al_as.id_asignatura == idAsig
                    select al_as;

                // Ejecutar la consulta y cambiar la nota
                consulta1.First().nota = consulta1.First().nota + 0.5F;

                // SESIÓN 2: contexto2DeObjs
                // Obtener los datos: mismo alumno y misma asignatura
                // pero diferente nota

                // Consulta para obtener la fila a modificar
                var consulta2 =
                    from al_as in contexto2DeObjs.alums_asigs
                    where al_as.id_alumno == idAlum &&
                    al_as.id_asignatura == idAsig
                    select al_as;

                // Ejecutar la consulta y cambiar la nota
                consulta2.First().nota = consulta2.First().nota + 0.75F;

                // SESIÓN 1: enviar los cambios a la base de datos
                bool errorSaveChanges;
                do
                {
                    errorSaveChanges = false;
                    try
                    {
                        contexto1DeObjs.SaveChanges();
                    }
                    catch (DbUpdateConcurrencyException ex)
                    {
                        errorSaveChanges = true;
                        // Actualizar los valores de la entidad que falló
                        // al salvar los cambios
                        var objDbEntityEntry = ex.Entries.Single();
                        objDbEntityEntry.Reload();

                        // Actualizar los valores originales desde la base de datos
                        //objDbEntityEntry.OriginalValues.SetValues(
                        //                       objDbEntityEntry.GetDatabaseValues());
                    }
                }while (errorSaveChanges);

                // SESIÓN 2: enviar los cambios a la base de datos
                do
                {
                    errorSaveChanges = false;
                    try
                    {
                        contexto2DeObjs.SaveChanges();
                    }
                    catch (DbUpdateConcurrencyException ex)
                    {
                        errorSaveChanges = true;
                        // Actualizar los valores de la entidad que falló
                        // al salvar los cambios
                        var objDbEntityEntry = ex.Entries.Single();
                        objDbEntityEntry.Reload();

                        // Actualizar los valores originales desde la base de datos
                        //objDbEntityEntry.OriginalValues.SetValues(
                        //                       objDbEntityEntry.GetDatabaseValues());
                    }
                }while (errorSaveChanges);
            }
        }
示例#14
0
 public ProveedorDeDatos()
 {
     contextoDeObjs = new bd_notasAlumnosEntities();
 }