c# - 开始日期保存到数据库,而不是 DataPicker 中选择的日期
问题描述
你好我有奇怪的问题。我想将 DataPicker 中的日期保存到数据库。
在视图中
<DatePicker Name="Date"
SelectedDate="{Binding Path=Date, UpdateSourceTrigger=PropertyChanged}" />
在 ViewModel -> 如果用户没有从 DatePicker 中选择任何日期,则设置默认值 - 今天的日期
public DateTime Date
{
get { return item.date == DateTime.MinValue ? DateTime.Today : item.date; }
set
{
if (value != item.date)
{
item.date = value;
OnPropertyChanged(() => Date);
}
}
}
第一种情况:用户在 DatePicker 中选择的日期不是今天
断点:日期 {12.02.2020 00:00:00} System.DateTime
结果:一切正常,在数据库中保存 12.02.2020
第二种情况:用户在 DatePicker 中选择了今天的日期
断点:日期 {27.02.2020 00:00:00} System.DateTime
结果:一切正常,数据库已保存 27.02.2020
第三种情况:用户没有选择日期(日期是自动设置的)
断点:日期 {27.02.2020 00:00:00} System.DateTime
结果:一切都错了,在数据库中保存 1.1.1
解决方案
问题似乎是属性值仅在get
方法中设置为正确的值,但实体框架不会以这种方式跟踪更改 - 我相信您必须告诉 EF 对象属性已被修改。
我认为这样的事情应该可以解决问题(在你打电话之前SaveChanges
):
dbContext.Entry(item).Property(i => i.Date).IsModified = true;
推荐阅读
- python - 如何使用 python 代码在单个图像上裁剪连续圆形区域
- c# - 当我更新安全标记时,网页永远不会结束加载
- reactjs - ReactJS:从本地存储令牌获取数据时超出了最大更新深度
- python - mpi4py 不允许我使用 dtype = object 发送和接收数组
- java - 用于域模型的 CRUD 操作的通用类
- flutter - Flutter:将列表保存为收藏夹
- javascript - 如何在 Javascript 事件中选择 XML 标记或类并更新其 CSS 样式属性和 classList?
- qt - 如何在qml中绘制一个梯形的图像?
- mongodb - 在使用 mergeObjects MongoDB 之前对数组进行排序
- reactjs - React - 在 setState 之后返回 undefined