C# 将数据更新到数据库中
我在向数据库添加数据时遇到问题。我编写的代码只能更新shiftming_启动,而不能更新shiftming_停止。谁能帮我看看我的代码,看看哪里出了问题。非常感谢C# 将数据更新到数据库中,c#,linq,datagridview,updating,C#,Linq,Datagridview,Updating,我在向数据库添加数据时遇到问题。我编写的代码只能更新shiftming_启动,而不能更新shiftming_停止。谁能帮我看看我的代码,看看哪里出了问题。非常感谢 private void btnUpdate_Click(object sender, EventArgs e) { using (testEntities Setupctx = new testEntities()) { var toBeUpdated = txtStart.Text; var toBeUpdat
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.");
}
}
假设我正确地跟踪了您(我建议使用更有意义的变量名),请按如下方式更新代码:
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.");
}
}
请注意,
updateShift=Setupctx.shifthours.FirstOrDefault(u=>u.shiftming\u start==toBeUpdated)代码>被后续类似行有效地丢弃,该行涉及p
;这是您要更新的记录吗?u和p都是我要更新的记录。但是现在我只能更新'u'而不能更新'p'。你有没有在txtStop.text中添加一个断点进行检查?是的,我已经检查过了。数据不会更新数据库。如果我只更新开始时间,它可以被更新,但是如果我同时更新这两个时间,这两个时间都不能被更新。@Philemon不,现在你只更新p
1;u
一个被提取但被丢弃。我尝试了你的代码,编译时错误显示为“序列不包含元素”。这是他们突出显示的一行。“updateShiftStart=Setupctx.shifthours.Single(u=>u.shiftTiming_start==toBeUpdatedStart);”顺便说一句,文本框中已经有我从datagridview中选择的数据,不可能是空的,对吗?你能发布你正在使用的确切代码吗?我不确定“updateShiftStart=Setupctx.shifthours.Single(u=>u.shiftming_start==tobeupdatestart);”上怎么会有错误,因为我的建议中没有包括这一点。FirstOrDefault更安全,因为如果找不到匹配项,它将返回null。文本框值不太可能为null,但如果Setupctx中的shifthour没有任何匹配值,则updateStartShift可能为null。根据您描述的错误,Setupctx.shifthours是一个空列表,或者没有与您的条件匹配的元素。