Обновите запись, используя Entity Framework, получив 2 параметра - PullRequest
0 голосов
/ 27 мая 2018

Я хочу обновить конкретную строку базы данных.Это код:

public void Update_Datos(int ID)
{
    int UserId = Convert.ToInt16((string)(Session["UserId"]));
    using (var db = new Entities())
    {
        //Reading
        List<Datos_Personales> objDatos = db.Datos_Personales.ToList<Datos_Personales>();
        foreach (Datos_Personales item in objDatos)
        {

        }
        //Update
        var datos_personales = db.Datos_Personales.FirstOrDefault(d => d.UserId == UserId && d.Id == ID);
        Datos_Personales datos = objDatos[datos_personales.Id];
        datos = db.Datos_Personales.Where(d => d.UserId == UserId && d.Id == ID).First();
        datos.Fecha_de_nacimiento = Convert.ToDateTime(Fecha_de_nacimiento.Text);
        datos.Nombre_Completo = txt_Nombre_Completo.Text;
        datos.Identificacion = txt_Identificacion.Text;
        datos.Estado_civil = ddEstadoCivil.SelectedValue;
        datos.Telefono = txt_num_telefono.Text;
        datos.Departamento = ddDepartamento.SelectedValue;
        datos.Nacionalidad = Country.SelectedValue;
        datos.Salario_min_aceptado = ddSalario_min_aceptado.SelectedValue;
        datos.Titulo = txt_Titulo.Text;
        datos.Descripcion_Profesional = txt_Descripcion_Profesional.Text;
        datos.UserId = Convert.ToInt16(UserId);
        db.Datos_Personales.Add(datos);
        db.SaveChanges();
    }
}

Другая проблема заключается в том, что он создает другую строку вместо обновления той, которая мне нужна.

1 Ответ

0 голосов
/ 27 мая 2018

Вы не должны читать все Db.Когда вы используете эту строку List<Datos_Personales> objDatos = db.Datos_Personales.ToList<Datos_Personales>();, все ваши объекты (все строки в Db) сохраняются в памяти.

Вы можете напрямую получать данные и редактировать их.Наконец, вы не должны снова добавлять сущность, просто вызовите SaveChages.(Если вы не закрыли ChangeTracker)

public void Update_Datos(int ID)
{
    int UserId = Convert.ToInt16((string)(Session["UserId"]));
    using (var db = new Entities())
    {
        Datos_Personales datos = db.Datos_Personales.FirstOrDefault(d => d.UserId == UserId && d.Id == ID));
        if(datos == null)
            return;

        datos.Fecha_de_nacimiento = Convert.ToDateTime(Fecha_de_nacimiento.Text);
        datos.Nombre_Completo = txt_Nombre_Completo.Text;
        datos.Identificacion = txt_Identificacion.Text;
        datos.Estado_civil = ddEstadoCivil.SelectedValue;
        datos.Telefono = txt_num_telefono.Text;
        datos.Departamento = ddDepartamento.SelectedValue;
        datos.Nacionalidad = Country.SelectedValue;
        datos.Salario_min_aceptado = ddSalario_min_aceptado.SelectedValue;
        datos.Titulo = txt_Titulo.Text;
        datos.Descripcion_Profesional = txt_Descripcion_Profesional.Text;
        datos.UserId = Convert.ToInt16(UserId);
        db.SaveChanges();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...