繁体   English   中英

实体框架核心 2 HasDefaultValueSql() 不适用于 MySQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM