我的 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;
}
- 1 回答
- 0 关注
- 221 浏览
添加回答
举报
0/150
提交
取消