繁体   English   中英

更新C#查询

[英]Update enquiries for C#

private void btnUpdate_Click(object sender, EventArgs e)
{
    using (testEntities Setupctx = new testEntities())
    {

        var toBeUpdatedStart = txtStart.Text;
        var toBeUpdatedStop = txtStop.Text;
        shifthour updateShiftStart;
        shifthour updateShiftStop;
        updateShiftStart = Setupctx.shifthours.FirstOrDefault(u => u.shiftTiming_start == toBeUpdatedStart);
        updateShiftStop = Setupctx.shifthours.FirstOrDefault(p => p.shiftTiming_stop == toBeUpdatedStop);
        updateShiftStart.shiftTiming_start = txtStart.Text;  <-- error prompt here
        updateShiftStop.shiftTiming_stop = txtStop.Text;
        Setupctx.SaveChanges();
        txtStart.Text = "";
        txtStop.Text = "";
        MessageBox.Show("Shift Timing Has Been Updated.");
    }
}

嗨,有人知道此代码有什么问题吗? 更多信息:这是为员工编辑轮班时间。 当我输入新的开始和停止时间时,错误提示并说“对象引用未设置为对象的实例”。

您的updateShiftStart为null,这就是为什么您遇到此异常的原因。 由于您使用的是FirstOrDefault因此它将返回第一个结果,如果未找到则返回null,并且您的搜索未返回任何内容,这就是为什么将updateShiftStart分配为null的原因,因此是异常。 您可以在使用该值之前先进行检查。

if(updateShiftStart != null)
  {
    updateShiftStart.shiftTiming_start = txtStart.Text;
  }

您的比较, (u => u.shiftTiming_start == toBeUpdatedStart); 可能是。 由于您正在比较字符串,因此可以使用

updateShiftStart = Setupctx.shifthours.FirstOrDefault(u => u.shiftTiming_start.Equals(toBeUpdatedStart));

您可以使用StringComparison.InvariantCultureIgnoreCase忽略Equals中的大小写

使用FirstOrDefault()使用查询来设置变量updateShiftStart和updateShiftStop,这可能会导致NULL引用。

updateShiftStart为null,表示该行

 updateShiftStart = Setupctx.shifthours.FirstOrDefault(u => u.shiftTiming_start == toBeUpdatedStart);

无法返回对象。 FirstOrDefault将查找它可以找到的第一个项目,或者为null。 如果您的代码绝对要求updateShiftStart不为null,则应在操作后检查,或改用First

私人无效btnUpdate_Click(对象发送者,EventArgs e){使用(testEntities Setupctx = new testEntities()){int ID = Int32.Parse(lblID.Text); var SHquery =(从Setupctx.shifthours中的sh中,其中sh.idShiftHours == ID选择sh).First();

                SHquery.shiftTiming_start = txtStart.Text;
                SHquery.shiftTiming_stop = txtStop.Text;
                Setupctx.SaveChanges();
                txtStart.Text = "";
                txtStop.Text = "";
                this.Edit_Shift_Hours_Load(null, EventArgs.Empty);
                MessageBox.Show("Shift Timing Has Been Updated.");
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM