2012-07-10 138 views
1

我在將數據添加到數據庫時遇到問題。我寫的代碼只能更新shiftTiming_Start,而不能更新shiftTiming_Stop。有人可以幫助看看我的代碼,看看出了什麼問題。非常感謝。將數據更新到數據庫中

private void btnUpdate_Click(object sender, EventArgs e) { 
    using (testEntities Setupctx = new testEntities()) { 
    var toBeUpdated = txtStart.Text; 
    var toBeUpdated1 = txtStop.Text; 
    shifthour updateShift = new shifthour(); 
    updateShift = Setupctx.shifthours.FirstOrDefault(u => u.shiftTiming_start == toBeUpdated); 
    updateShift = Setupctx.shifthours.FirstOrDefault(p => p.shiftTiming_stop == toBeUpdated1); 
    updateShift.shiftTiming_start = txtStart.Text; 
    updateShift.shiftTiming_stop = txtStop.Text; 
    Setupctx.SaveChanges(); 
    txtStart.Text = ""; 
    txtStop.Text = ""; 
    MessageBox.Show("Shift Timing Has Been Updated."); 
    } 
} 
+1

注意'updateShift = Setupctx.shifthours.FirstOrDefault(U => u.shiftTiming_start == toBeUpdated);''被涉及'p'的後續相似行有效丟棄;是你正在嘗試更新的記錄? – 2012-07-10 05:43:51

+0

'u'和'p'都是我要更新的那個。但現在我只能更新'u'而不是'p'。 – Philemon 2012-07-10 05:56:58

+0

如果他們是txtStop.Text裏面的任何東西,你是否已經檢查了一個斷點 – HatSoft 2012-07-10 06:11:17

回答

0

假設我是正確的跟着你(我會建議使用更有意義的變量名),如下所示更新代碼:

private void btnUpdate_Click(object sender, EventArgs e) { 
    using (testEntities Setupctx = new testEntities()) { 
    var toBeUpdatedStart = txtStart.Text; 
    var toBeUpdatedStop = txtStop.Text; 
    shifthour updateStartShift; 
    shifthour updateStopShift; 
    updateStartShift = Setupctx.shifthours.FirstOrDefault(u => u.shiftTiming_start == toBeUpdatedStart); 
    updateStopShift = Setupctx.shifthours.FirstOrDefault(p => p.shiftTiming_stop == toBeUpdatedStop); 
    if (updateStartShift != null) 
    { 
     updateStartShift.shiftTiming_start = txtStart.Text; 
    } 
    if (updateStopShift != null) 
    { 
     updateStopShift.shiftTiming_stop = txtStop.Text; 
    } 
    Setupctx.SaveChanges(); 
    txtStart.Text = ""; 
    txtStop.Text = ""; 
    MessageBox.Show("Shift Timing Has Been Updated."); 
    } 
} 
+0

我嘗試了你的代碼,當我編譯錯誤時顯示我是'Sequence contains no element'。這是他們強調的一行。 「updateShiftStart = Setupctx.shifthours.Single(u => u.shiftTiming_start == toBeUpdatedStart);」順便說一下,文本框已經有數據,我從datagridview中選擇,不可能是空的權利? – Philemon 2012-07-11 01:20:21

+0

你可以發佈你使用的確切代碼嗎?我不知道如何在「updateShiftStart = Setupctx.shifthours.Single(u => u.shiftTiming_start == toBeUpdatedStart)」上出現錯誤;「因爲我沒有在我的建議中包括這一點。 FirstOrDefault更安全,因爲如果它找不到匹配項,它將返回null。文本框值不可能爲空,但如果在Setupctx中shifthours沒有任何匹配值,則updateStartShift可能爲null。根據您描述的錯誤,Setupctx.shifthours是一個空列表,或者沒有符合條件的元素。 – 2012-07-11 12:04:35