【问题标题】:The start date is saved to the database instead of the date selected in the DataPicker开始日期保存到数据库,而不是 DataPicker 中选择的日期
【发布时间】:2020-02-27 17:52:22
【问题描述】:

您好,我有一个奇怪的问题。我想将日期从 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

【问题讨论】:

  • 问题可能出在将日期保存到数据库的代码中。可以分享一下吗?
  • public override void save() { ATMAEntites.SprzedawcySprzedaz.Add(item); ATMAEntites.SaveChanges(); }
  • 它的类型为DateTime,它必须有一个值。也许应该是DateTime?
  • 我试试这个,但没有帮助:(

标签: c# sql datetime


【解决方案1】:

问题似乎是属性值仅在 get 方法中设置为正确的值,但实体框架不会以这种方式跟踪更改 - 我相信您必须告诉 EF 该对象属性已被修改。

认为这样的事情应该可以解决问题(在你打电话给SaveChanges之前):

dbContext.Entry(item).Property(i => i.Date).IsModified = true;

【讨论】:

    猜你喜欢
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多