public ActionResult Create(DonacionesViewModel modelo)
        {
            //modelo.donacion.colaboradores = new colaboradores(db.persona.Where(x => x.id == modelo.donacion.idColaborador).First();
            if (ModelState.IsValid)
            {
                // Se crea la donación en la base de datos.
                db.donaciones.Add(modelo.donacion);
                db.SaveChanges();
                // Añadir al colaborador en la tabla de colaboradores.

                /*persona.colaboradores.Add(colaborador);
                 * persona.colaboradores.First().CIF_NIF = modelo.NIF;
                 * persona.colaboradores.First().CuentaBancaria = modelo.cuentaBancaria;
                 * db.Entry(persona).State = EntityState.Modified;
                 *
                 * db.SaveChanges();*/
                using (var context = new GestorONGDContext())
                {
                    var persona     = context.persona.Find(modelo.donacion.idColaborador);
                    var colaborador = new colaboradores(persona, modelo.NIF, modelo.cuentaBancaria);

                    personas_perfiles per_perfiles = new personas_perfiles()
                    {
                        idPersona = modelo.donacion.idColaborador,
                        idPerfil  = 2
                                    //personas = colaborador
                    };

                    /*persona.colaboradores = new HashSet<colaboradores>();
                     * persona.colaboradores.Add(colaborador);*/
                    /*var colaborador = new colaboradores()
                     * {
                     *  CIF_NIF = modelo.NIF,
                     *  CuentaBancaria = modelo.cuentaBancaria
                     * };*/
                    context.colaboradores.Add(colaborador);
                    context.SaveChanges();
                    colaborador.idColaborador        = modelo.donacion.idColaborador;
                    context.Entry(colaborador).State = EntityState.Modified;
                    context.persona.Remove(persona);
                    context.persona_perfil.Add(per_perfiles);
                    context.SaveChanges();
                }
                //db.Entry(persona).State = EntityState.Detached;

                /*var existingcolaborador = db.colaboradores.Where(x => x.id == modelo.donacion.idColaborador).FirstOrDefault();
                 * existingcolaborador.idColaborador = modelo.donacion.idColaborador;
                 * existingcolaborador.CIF_NIF = modelo.NIF;
                 * existingcolaborador.CuentaBancaria = modelo.cuentaBancaria;
                 * db.Entry(existingcolaborador).State = EntityState.Modified;
                 *
                 * // Añadir la relación entre personas y perfiles en la tabla personas_perfiles
                 * var personas_perfiles = new personas_perfiles(0, modelo.donacion.idColaborador, 2);
                 * db.persona_perfil.Add(personas_perfiles);
                 * db.SaveChanges();*/
                //TempData["Acierto"] = "La donación creada por el colaborador " + persona.nombre + " " + persona.apellidos + " con un valor de " + modelo.donacion.cantidad + "€ ha sido realizada correctamente";



                return(RedirectToAction("Index"));
            }
            else
            {
                var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception));
                Console.Write(errors.ToString());
            }

            // Se listan las personas que no son colaboradores existentes en el sistema puesto que sólo se puede hacer una única donación por usuario.
            var colaboradores = getColaboradoresSelectList();

            ViewBag.idColaborador  = colaboradores;
            ViewBag.idPeriodicidad = new SelectList(db.periodicidades, "id", "nombre", modelo.donacion.idPeriodicidad);
            return(View(modelo));
        }