2012-07-10 142 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