EF数据绑定,编辑,修改,保存记录

时间:2016-03-02 15:17:18

标签: c# entity-framework data-binding edit

我需要一个EF示例代码来根据搜索字段中的值填充我的客户表单控件。考虑到此表单上的组合已经填充,用户可以通过在textBox上指定值来创建新记录或编辑现有记录。组合填充来自国家,州,市等辅助表的数据库数据(名称)。 在Customer表上,我只有这些名称的Id(外键)。因此,在用户放置客户ID的表单上,如果它不存在,我们正在创建一个新记录,否则表单应该从数据库加载整个记录并填写表单上的相应字段,包括显示在组合记录中与Id匹配的名称,为用户提供修改任何字段并将其保存回来的选项。  在非EF场景中,我会有类似的东西:

    private void txtId_TextChanged(object sender, EventArgs e)
    {
        sqlStrQuery = "Select FName, LName, Email, Phone, CountryId from Customer where ID= '" + txtId.Text + "'";
        SqlCommand sqlCmd = new SqlCommand(sqlStrQuery, sqlConStr);

        sqlConStr.Open();
        SqlDataReader drCustomer = sqlCmd.ExecuteReader();
        if (drCustomer.HasRows)
        {
            while (drCustomer.Read())
            {
                txtFirstName.Text = drCustomer.GetValue(1).ToString();
                txtlastName.Text = drCustomer.GetValue(2).ToString();
                txtEmail.Text = drCustomer.GetValue(3).ToString();
                txtPhone.Text = drCustomer.GetValue(4).ToString();
                cboCountry.SelectedValue = drCustomer.GetValue(5);

            }
        }

    }

如何将其转换为EF? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

假设您的数据上下文中有变量,例如上下文:

var customer = context.Customers.Find(txtId.Text);
if (customer != null)
{
    txtFirstName.Text = customer.FirstName;
    txtlastName.Text = customer.LastName;
    txtEmail.Text = customer.Email;
    txtPhone.Text = customer.Phone;
    cboCountry.SelectedValue = customer.CountryId;
}

编辑:搜索多个条件

var matches = context.Customers.AsQueryable();
if (!string.IsNullOrEmpty(txtLastName.Text))
{
     matches = matches.Where(m => m.LastName == txtLastName.Text);
}
if (!string.IsNullOrEmpty(txtFirstName.Text))
{
     matches = matches.Where(m => m.FirstName == txtFirstName.Text);
}
// repeat for searchable fields
return matches.ToList();