如何解决EF Core和Postgresql生成表达式在modified_at列上不可变
我正在学习aspnet.core
在laravel中,我们可以执行$table->timestamps()
来生成created_at
和modified_at
以进行自动更新。
搜索后,我发现我们可以在EFCore中完成此操作(我将Postgresql与npgsql
一起使用 modelBuilder.Entity<User>()
.Property(u => u.created_at)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.ValueGeneratedOnAdd();
modelBuilder.Entity<User>()
.Property(u => u.modified_at)
.HasComputedColumnSql("CURRENT_TIMESTAMP")
.ValueGeneratedOnUpdate();
但是我遇到错误:
无法执行DbCommand(7毫秒)[Parameters = [],CommandType ='Text',CommandTimeout = '30'] ALTER TABLE“ Users”在没有时区的情况下在时间戳上添加Modifyed_at,始终以(CURRENT_TIMESTAMP)的形式生成; Npgsql.PostgresException(0x80004005):42P17:生成表达式不是不可变的 在Npgsql.NpgsqlConnector。 c__DisplayClass160_0。
d.MoveNext() ---从之前引发异常的位置开始的堆栈结束跟踪--- 在Npgsql.NpgsqlConnector。 c__DisplayClass160_0。 d.MoveNext() ---从之前引发异常的位置开始的堆栈结束跟踪--- 在Npgsql.NpgsqlDataReader.NextResult(布尔异步,布尔isConsuming)
我怀疑HasComputedColumnSql
有几个问题,但我不知道为什么。有人可以帮忙吗?
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。