Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用接收2个参数的实体框架更新记录_C#_Entity Framework - Fatal编程技术网

C# 使用接收2个参数的实体框架更新记录

C# 使用接收2个参数的实体框架更新记录,c#,entity-framework,C#,Entity Framework,我想更新数据库的特定行。代码如下: 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

我想更新数据库的特定行。代码如下:

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();
    }
}
public void Update\u Datos(int-ID)
{
int UserId=Convert.ToInt16((字符串)(会话[“UserId]”));
使用(var db=new Entities())
{
//阅读
List objDatos=db.Datos_personals.ToList();
foreach(对象中的个人数据项)
{
}
//更新
var datos_personals=db.datos_personals.FirstOrDefault(d=>d.UserId==UserId&&d.Id==Id);
Datos_personals Datos=objDatos[Datos_personals.Id];
datos=db.datos_personals.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.identification=txt_identification.Text;
datos.Estado_civil=ddEstadoCivil.SelectedValue;
datos.Telefono=txt_num_Telefono.Text;
datos.departmento=dddepartmento.SelectedValue;
datos.Nacionalidad=Country.SelectedValue;
datos.Salario_min_aceptado=ddSalario_min_aceptado.SelectedValue;
datos.Titulo=txt_Titulo.Text;
datos.Description_Professional=txt_Description_Professional.Text;
datos.UserId=Convert.ToInt16(UserId);
db.Datos_Personales.Add(Datos);
db.SaveChanges();
}
}

另一个问题是,它会创建另一行,而不是更新我需要的行。

您不能读取所有数据库。当您使用这一行时,
List objDatos=db.Datos_personals.ToList(),存储在内存中的所有实体(数据库中的所有行)

您可以直接获取数据并对其进行编辑。最后,您不能再次添加实体,只能调用
SaveChages
。(如果您没有关闭
ChangeTracker


删除db.Datos_personals.Add(Datos)行;DATOS变量是由EF跟踪的,您只需要保存。进一步到史提夫所说的,考虑一下您从哪里得到了<代码> DATOS<代码>:<代码> DATOS= DB。DATOSUMLATIAL。在哪里(D= > D.USERID=USERID和DID==ID)。代码>。您首先从db.Datos_personals获得它,那么为什么您需要将它添加到同一个集合中呢<代码>添加
用于添加新实体,这就是创建新记录的原因。
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();
    }
}