2017-05-25 83 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(); 
       } 

非常感謝。

相關問題