在更新期间自动生成值

时间:2018-06-03 00:33:37

标签: sql-server entity-framework-core

我在OnModelCreating中使用ef-core 2.1和MSSQL,我使用以下内容正确自动填充已创建的字段:

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;

然而,这没有效果。在阅读value-generated-on-add-or-update时,我不清楚是否存在不支持此功能的设施,触发器是唯一的选择,或者我只是配置错误。

流畅的方法调用似乎支持这一点,任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

嗯,我对.Metadata.ValueGenerated尝试的内容并不熟悉,但是,我在my project中做了非常相似的事情并取得了成功(注意我的数据库是MySQL)。

也许尝试如下。

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