2017-05-25 60 views
1

我在想,如果有人能帮助我在这种情况下:我想救我的数据库更改的,所以我用一个背景下,我有_tblcustomer这是一个对象,从我的实体类,这里是我的代码:如何使用实体框架将更改保存到数据库?

private void BtnSaveCustomer_Click(object sender, EventArgs e) 
{ 
    if (CustomerMode == (int)CustomerModeOperaton.insert) 
    { 
     if (!string.IsNullOrWhiteSpace(TxtCustomerName.Text) || 
      !string.IsNullOrWhiteSpace(TxtLastName.Text) || 
      !string.IsNullOrWhiteSpace(TxtCustomerCode.Text)) 
     { 
      tblCustomer Customer = new tblCustomer(); 

      Customer.CustomerName = TxtCustomerName.Text.ToString(); 
      Customer.CustomerCode = Convert.ToInt32(TxtCustomerCode.Text); 

      if (!string.IsNullOrWhiteSpace(TxtCustomerAdress.Text)) 
      { 
       Customer.CustomerAdresse = TxtCustomerAdress.Text.ToString(); 
      } 
      else 
      { 
       Customer.CustomerAdresse = null; 
      } 

      if (!string.IsNullOrWhiteSpace(TxtCustomerPhone.Text)) 
      { 
       Customer.CustomerPhone = Convert.ToInt32(TxtCustomerPhone.Text); 
      } 
      else 
      { 
       Customer.CustomerPhone = null; 
      } 

      if (!string.IsNullOrWhiteSpace(TxtCustomerCellphone.Text)) 
      { 
       Customer.CustomerCellPhone = Convert.ToInt32(TxtCustomerCellphone.Text); 
      } 
      else 
      { 
       Customer.CustomerCellPhone = null; 
      } 

      Customer.CustomerLastName = TxtLastName.Text.ToString(); 
      Customer.CustomerID = Guid.NewGuid(); 
      Customer.rowguid = Guid.NewGuid(); 

      using (var Context = new FactorEntities()) 
      { 
       Context.tblCustomers.Add(Customer); 
       Context.SaveChanges(); 
      } 

      MessageBox.Show("اطلاعات مشتری در سیستم ثبت شد"); 
      // status=1; 
     } 
     else 
     { 
      MessageBox.Show("نام مشتری و نام خانوادگی و کد مشتری باید پر شوند"); 
     } 
    } 
    else 
    { 
     using (var context = new FactorEntities()) 
     { 
      var CustomerDetaile = context.tblCustomers.Find(CustomerID); 

      _tblCustomer = new tblCustomer(); 
      _tblCustomer.CustomerID = CustomerDetaile.CustomerID; 
      _tblCustomer.CustomerName = TxtCustomerName.Text; 
      _tblCustomer.CustomerLastName = TxtLastName.Text; 
      _tblCustomer.CustomerCode = Convert.ToInt32(TxtCustomerCode.Text); 
      _tblCustomer.CustomerAdresse = TxtCustomerAdress.Text; 

      context.SaveChanges(); 
     } 

     MessageBox.Show("اطلاعات در سیستم ثبت شد"); 
    } 
} 

主要部分是在这里:提前

using (var context =new FactorEntities()) 
{ 
    var CustomerDetaile = context.tblCustomers.Find(CustomerID); 
    _tblCustomer = new tblCustomer(); 
    _tblCustomer.CustomerID = CustomerDetaile.CustomerID; 
    _tblCustomer.CustomerName = TxtCustomerName.Text; 
    _tblCustomer.CustomerLastName = TxtLastName.Text; 
    _tblCustomer.CustomerCode = Convert.ToInt32(TxtCustomerCode.Text); 
    _tblCustomer.CustomerAdresse = TxtCustomerAdress.Text; 

    context.SaveChanges(); 
} 

,但我不知道为什么它不保存尚未...

感谢。

+0

'context.SaveChanges();'应该这样做,不是吗? – jdmdevdotnet

+0

@jdmdevdotnet是先生..但它不工作 –

+0

“它不工作”什么不行? 'context.SaveChanges'起作用。什么错误信息? – jdmdevdotnet

回答

4

我没有看到任何地方,你在你的“主要部分”

context.tblCustomers.Add(_tblCustomer); 

相反,如果你想修改退出对象添加_tblCustomer对象的背景下,具有类似,你应该写,而不是

CustomerDetaile.CustomerId = "the new id" 

而现在它将被保存。

你现在正在做什么,正在创造一个新的客户,指定自己的价值观,什么也不做它。

+0

,因为我不应该使用此代码...我在我的数据库中有这个客户,所以为什么我应该再次添加它!?如果我加我会碰到这样的错误:无法插入对象“dbo.tblCustomers” –

+0

在这种情况下重复键,你必须修改你从数据库中拿了实体,而不是创建一个新的(我编辑我的答案) –

0

要在这种情况下,新对象保存到数据库中,你将需要使用:

var obj = context.TableName.New(); 
    obj.Name = "BLA"; 
    obj.Salary = 32; 
    context.TableName.Add(obj); 
    context.SaveChanges(); 

要在表中编辑现有对象:

var obj = context.TableName.Find(id); 
obj.Name = "BLA"; 
obj.Salary = 32; 
context.Entry(obj).State = EntryState.Modified; 
context.SaveChanges(); 

它总是为我工作=)应用此概念到你的代码,它可能工作。

+0

我没有得到EntryState,我的代码中的EntryState是什么? –

+0

不在你的,只是为了将来,如果你想改变现有对象中的东西,你将不得不输入。 – Ssheverdin

+0

示例, var obj = context.TableName.Find(id); obj.Name =“BLA”; obj.Salary = 32; context.Entry(obj).State = EntryState.Modified; context.SaveChanges(); – Ssheverdin

0

我不应该做出新的......我必须编写代码为我的选择...我得到它通过@ChristianKouamé帮助这里是我的代码:

using (var context =new FactorEntities()) 
       { 
        var CustomerDetaile= context.tblCustomers.Find(CustomerID); 
        CustomerDetaile.CustomerID = CustomerID; 
        if (!string.IsNullOrWhiteSpace(TxtCustomerName.Text)) 
        { 
         CustomerDetaile.CustomerName = TxtCustomerName.Text; 

        } 


        CustomerDetaile.CustomerLastName = TxtLastName.Text; 
        CustomerDetaile.CustomerAdresse = TxtCustomerAdress.Text; 
        CustomerDetaile.CustomerCellPhone = Convert.ToInt32(TxtCustomerCellphone.Text); 
        CustomerDetaile.CustomerCode = Convert.ToInt32(TxtCustomerCode.Text); 
        context.SaveChanges(); 
       } 

非常感谢。

相关问题