[英]Entity Framework Core 2 HasDefaultValueSql() not working with MySQL
所以,我有一个带有这样道具的模型:
public DateTime Date { get; set; }
我试图为这个字段设置一个默认值,如下所示:
modelBuilder.Entity<Record>().Property(r => r.Date).HasDefaultValueSql("NOW()");
问题是未设置数据库列默认值。 当我使用“NOW()”函数时,迁移有效,但正如我所说,数据库中未设置列默认值。 当我尝试其他 MySql datetime 函数时,我收到此错误:
您的 SQL 语法有错误; 检查与您的 MariaDB 服务器版本相对应的手册,以获取在第 1 行附近使用的正确语法
我在这里缺少什么?
我遇到了完全相同的问题,当我按照本教程中的描述由.Net
本身制作迁移文件时。
entity.Property(e => e.ValidFrom)
.HasColumnName("valid_from")
.HasColumnType("datetime")
.HasDefaultValueSql("'current_timestamp()'"); //<-- Line of problem!
我没想到在自动生成的代码中出现任何错误! 但是,这是一个错误,不是我的错,也不是 .Net 错误。
问题实际上来自Pomelo.EntityFrameworkCore.MySql库中的一个错误。 我与开发商讨论过这里。
正如我所说:
所以你必须删除单引号......
我删除了单引号并解决了问题。
最后的解决办法是:
entity.Property(e => e.ValidFrom)
.HasColumnName("valid_from")
.HasColumnType("datetime")
.HasDefaultValueSql("current_timestamp()");
无论如何,他们说他们也会很快为 MariaDB 解决这个问题。
我认为你必须使用“getdate()”而不是“NOW()”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.