Автоматическое создание значения во время обновления - PullRequest
0 голосов
/ 03 июня 2018

Я использую ef-core 2.1 с MSSQL, в OnModelCreating Я использую следующее, что автоматически заполняет созданное поле правильно:

modelBuilder
    .Entity<MyModel>()
    .Property(e => e.Created)
    .HasDefaultValueSql("GETUTCDATE()")
    .ValueGeneratedOnAdd()
    .Metadata.AfterSaveBehavior = PropertySaveBehavior.Ignore;

Кроме того, я хочу заполнить (и обновить после этого) другоеполе выглядит следующим образом:

modelBuilder
    .Entity<MyModel>()
    .Property(e => e.Modified)
    .HasDefaultValueSql("GETUTCDATE()")
    .ValueGeneratedOnUpdate()
    .Metadata.ValueGenerated = ValueGenerated.OnUpdate;

Однако это не имеет никакого эффекта.При чтении значение, генерируемое при добавлении или обновлении мне не ясно, существует ли средство для поддержки этого, и триггер является единственным вариантом, или я просто неверно настроил конфигурацию.

Свободные вызовы методов, кажется, подтверждают это, кто-нибудь знает, что я делаю неправильно?

1 Ответ

0 голосов
/ 05 июня 2018

Хм, я не совсем знаком с тем, что вы пытаетесь с .Metadata.ValueGenerated, однако я делаю что-то очень похожее в моем проекте с успехом (обратите внимание, что моя БД - MySQL).

Может быть, попробуйте, как показано ниже.

modelBuilder
    .Entity<MyModel>()
    .Property(e => e.Modified)
    .HasDefaultValueSql("GETUTCDATE()")
    .ValueGeneratedOnAddOrUpdate();
...