Пока что я читаю документы, учебники, которые поднял google, и другие вопросы SO, но, кажется, я что-то упускаю и не понимаю (работает).
Я пытаюсь реализовать действительно крошечный PostgreSQLбаза данных для веб-API .NET Core 2.1 (микросервис).Я привык к первому подходу к базе данных, но для этого сервиса я решил попробовать первый подход к коду.
Я также решил использовать свободный API ModelBuilder, чтобы сохранить классы чистыми от атрибутов и определить большинствоструктуры в методе DbContext.OnModelCreating.Энди, возможно, однажды найдет решение, как сохранить DbContext в чистоте от определенных элементов Postgres и перенести их в миграции ...
Моя проблема в том, что требования определяют множество значений по умолчанию, и я не могу получитьони работают так, как они должны себя вести.
Например, у меня есть таблица Entity1, в которой только 3 столбца:
- int Id (идентификатор с автоматическим приращением)
- bool?IsEnabled (который должен получить значение по умолчанию true)
- DateTime?LastStatusChange (метка времени без timezonewhich, которая должна быть установлена при создании или обновлении до значения по умолчанию CURRENT_TIMESTAMP)
Идея значения по умолчанию для метки времени заключается в том, чтобы база данных была единственным экземпляром, создающим метки времени и использующим базу данныхзначения по умолчанию в качестве конфигурации для всех запущенных экземпляров.Например.когда требования изменяются на «значение по умолчанию должно теперь быть ложным», мы просто меняем значения по умолчанию в БД в существующих базах данных и обновляем миграцию для новых взносов.
Мой код modelBuilder в настоящее время:
modelBuilder.Entity<Entity1>(entity =>
{
entity.HasKey(e => e.Id);
entity.Property(e => e.Id)
.ValueGeneratedOnAdd();
entity.Property(e => e.IsEnabled)
.HasDefaultValue(true)
.ValueGeneratedOnAddOrUpdate();
entity.Property(e => e.LastStatusChange)
.HasColumnType("timestamp without time zone")
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.ValueGeneratedOnAddOrUpdate();
});
, который работает для новых созданных значений.
При переключении или сбросе полей я использую
entity.LastStatusChange = null;
и или
entity.IsEnabled = null;
Я предполагал установить их на нольбудет инициировать создание значения по умолчанию, но это не влияет на поле LastStatusChange (значение остается прежним) и устанавливает IsEnabled в значение null.
В любом случае, чтобы получить значения по умолчанию в БД при обновлении через ядро платформы сущностей?