所以,我有一个带有如下 Prop 的模型:
public DateTime Date { get; set; }
我正在尝试为此字段设置默认值,如下所示:
modelBuilder.Entity<Record>().Property(r => r.Date).HasDefaultValueSql("NOW()");
问题是没有设置数据库列默认值。当我使用“NOW()”函数时,迁移工作正常,但正如我所说,数据库中未设置列默认值。当我尝试其他 MySql 日期时间函数时,出现此错误:
您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在第 1 行的 '' 附近使用的正确语法
我在这里错过了什么?
最佳答案
我遇到了完全相同的问题,而我按照 this tutorial 中的描述通过 .Net 本身制作了迁移文件。 .
entity.Property(e => e.ValidFrom)
.HasColumnName("valid_from")
.HasColumnType("datetime")
.HasDefaultValueSql("'current_timestamp()'"); //<-- Line of problem!
我没想到自动生成的代码会出现任何错误! 但是,这是一个错误,不是我的错,也不是 .Net 错误。
问题实际上来自 Pomelo.EntityFrameworkCore.MySql 中的错误图书馆。我和开发者讨论过here .
正如我所说:
So you have to remove the single quotes ...
我删除了单引号和问题 resolved .
最后的解决方案是:
entity.Property(e => e.ValidFrom)
.HasColumnName("valid_from")
.HasColumnType("datetime")
.HasDefaultValueSql("current_timestamp()");
不管怎样,他们说他们很快也会为 MariaDB 解决这个问题。
关于mysql - Entity Framework Core 2 HasDefaultValueSql() 不适用于 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49047424/