C# 无法从 DateTimePicker 将 Null 保存到数据库中
C# Can't save Null in Database from DateTimePicker
我的 Windows 表单中有一个 DateTimePicker,如果用户没有选择任何日期,我需要让它在数据库中保存 NULL。
但是,即使我不选择任何日期(检查为假),数据库中保存的值也是当前日期。
所以,我的项目是在 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 导入数据库?
谢谢
我假定您的 DateTimePicker 控件名为 dataEntrega
即使您更改了 DateTimePicker 的显示格式以清除显示的值,它仍然具有您通过 Value
属性.[=16= 访问的基础 DateTime 值]
在您的 SaveChanges
中,当分配给 DataEntregue
属性 时,您应该检查 DateTimePicker 的 Checked
属性 并采取相应的行动。
if(dataEntrega.Checked)
{
DataEntrega = dataEntrega.Value;
}
else
{
DataEntrega = null;
}
我的 Windows 表单中有一个 DateTimePicker,如果用户没有选择任何日期,我需要让它在数据库中保存 NULL。
但是,即使我不选择任何日期(检查为假),数据库中保存的值也是当前日期。
所以,我的项目是在 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 导入数据库?
谢谢
我假定您的 DateTimePicker 控件名为 dataEntrega
即使您更改了 DateTimePicker 的显示格式以清除显示的值,它仍然具有您通过 Value
属性.[=16= 访问的基础 DateTime 值]
在您的 SaveChanges
中,当分配给 DataEntregue
属性 时,您应该检查 DateTimePicker 的 Checked
属性 并采取相应的行动。
if(dataEntrega.Checked)
{
DataEntrega = dataEntrega.Value;
}
else
{
DataEntrega = null;
}