Значение по умолчанию DateTime.Now в конфигурации объекта всегда устанавливает один и тот же DateTime в базе данных. - PullRequest
0 голосов
/ 07 января 2019

У меня странная проблема при настройке моих сущностей в Fluent API с использованием EF Core.

Все мои сущности имеют поле EntityCreated, которое представляет собой объект DateTime, который устанавливается на текущий DateTime при добавлении в базу данных в качестве новой записи.

Ниже приведен мой код конфигурации для установки этого значения по умолчанию:

builder.Property(x => x.EntityCreated).HasDefaultValue(DateTime.Now);

Проблема в том, что каждый раз, когда добавляется новая запись, вместо использования текущего DateTime, он будет использовать первый DateTime, использованный при создании первой записи в БД.

Я очень сбит с толку, так как проверил, что этот DateTime нигде не устанавливается, прежде чем его зафиксируют в БД, я не уверен, что у кого-то еще была такая же проблема, но я как бы чешу голову из-за этого, так как я также попробовал несколько других методов, таких как:

1) builder.Property(x => x.EntityCreated).HasDefaultValueSql("getdate()");
2) builder.Property(x => x.EntityCreated).HasComputedColumnSql("getdate()");

Кто-нибудь может помочь в этом вопросе?

Очень ценится.

1 Ответ

0 голосов
/ 07 января 2019

Хорошо, я разобрался с проблемой.

Из-за конфигурации:

builder.Property(x => x.EntityCreated).HasDefaultValue(DateTime.Now);

Когда я создавал миграцию, он использовал DateTime, который был сгенерирован во время создания указанной миграции. В результате значение по умолчанию для этого поля стало статическим DateTime.

Чтобы преодолеть это, я вернул миграцию к предыдущей версии и использовал следующую конфигурацию:

builder.Property(x => x.EntityCreated).HasDefaultValueSql("getdate()");

Затем я создал новую миграцию и обновил базу данных.

Теперь это решило мою проблему.

...