В приложении asp.net core MVC мы получили поле DateTime LastUpdated. В sqlserver типом поля является дата и время. Если мы устанавливаем время (и дату) в базе данных, информация отображается правильно, но после обновления часть времени всегда устанавливается на нули. Код выглядит так:
[DataType(DataType.DateTime)]
public DateTime LastUpdated { get; set; }
object.LastUpdated = DateTime.UtcNow;
context.Update(object);
Спасибо за любую помощь!
Да, значение выглядит правильно, все остальные значения (строки, валюты и т. д.) сохраняются правильно. LastUpdated также сохраняется, но только часть даты.
Код здесь один будет работать. Проблема заключается либо в том, что тип столбца базы данных каким-то образом изменился, либо в игре есть какой-то другой код, который обрезает временную часть.
@ChrisPratt тип базы данных изменен с Date на DateTime (несколько дней назад) без желаемого эффекта (как мы обнаруживаем сейчас).
Что ж, я считаю, что теперь все ясно, может быть хорошо, если человек, который поставил мне отрицательный голос, вернет его :-)





читая ваш код С#, я считаю, что проблема в основном заключается в использовании функции UTC, потому что в вашей таблице тип данных - datetime, а не datetimeoffset, иначе в С# вы пытаетесь отправить ему данные UTC, только для проверки моя рекомендация изменить его на
[DataType(DataType.DateTime)]
public DateTime LastUpdated { get; set; }
object.LastUpdated = DateTime.Now;
context.Update(object);
Спасибо за подсказку, но Сейчас не имеет значения. Теперь и UtcNow возвращают DateTime.
быстрый способ подтверждения — просто добавить отформатированную дату, чтобы подтвердить, находится ли проблема в назначении в свойстве LastUpdated.
SQL Profiler показывает, что часть времени НЕ указана: [LastUpdated] = @p8, @p8='2019-03-15'
хороший момент, вы протестировали оба случая в профилях SQL с DateTime.Now и DateTimeNowUTC и отформатированным значением harcoded? Протестируйте эти 3 варианта
Тип базы данных был Date, изменен на DateTime, НО изменения были внесены вручную, и мы пропустили:
entity.Property(e => e.LastUpdated).HasColumnType("date");
что должно быть:
entity.Property(e => e.LastUpdated).HasColumnType("datetime");
Крис Пратт и другие, спасибо!
Правильно ли установлено значение в
object? А что за объектcontext?