为了账号安全,请及时绑定邮箱和手机立即绑定

C# 无法从 DateTimePicker 在数据库中保存 Null

C# 无法从 DateTimePicker 在数据库中保存 Null

C#
jeck猫 2021-07-06 17:55:08
我的 Windows 窗体中有一个 DateTimePicker,如果用户没有选择任何日期,我需要让它在数据库中保存 NULL。但是,即使我不选择任何日期(检查为 false),数据库中保存的值也是当前日期。所以,我的项目在 EF6 中。这是我的实体属性:[Display(Name = "Data Entrega")][Column(TypeName = "datetime2")]public DateTime? DataEntregue { get; set; }这是我的带有 DateTimePicker 的表单:处理程序:private void dataEntrega_ValueChanged(object sender, EventArgs e){    if (((DateTimePicker)sender).ShowCheckBox == true)    {        if (((DateTimePicker)sender).Checked == false)        {            ((DateTimePicker)sender).CustomFormat = " ";            ((DateTimePicker)sender).Format = DateTimePickerFormat.Custom;        }        else        {            ((DateTimePicker)sender).CustomFormat = "yyyy-MM-dd";            ((DateTimePicker)sender).Format = DateTimePickerFormat.Custom;        }    }    else    {        ((DateTimePicker)sender).CustomFormat = " ";        ((DateTimePicker)sender).Format = DateTimePickerFormat.Custom;    }}保存更改:DbContext ctx = new DbContext();Tools tl = new Tools(){    DataEntregue = dataEntrega.Value,    Comentarios = txtComentarios.Text.Trim(),    CreatedBy = Extensions.UserInfo.CurrentLoggedUser,    CreatedOn = DateTime.Now};ctx.Tools.Add(tl);ctx.SaveChanges();谁能帮我弄清楚为什么我不能将 NULL 放入数据库?
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

我假设你的 DateTimePicker 控件被调用 dataEntrega


即使您已更改 DateTimePicker 的显示格式以清除显示的值,它仍然具有您通过Value属性访问的基础 DateTime 值。


在您的 中SaveChanges,分配给DataEntregue属性时,您应该检查CheckedDateTimePicker的属性并采取相应的行动。


if(dataEntrega.Checked)

{

    DataEntrega = dataEntrega.Value;

}

else

{

    DataEntrega = null;

}


查看完整回答
反对 回复 2021-07-10
  • 1 回答
  • 0 关注
  • 221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信