草庐IT

mysql - Entity Framework Core 2 HasDefaultValueSql() 不适用于 MySQL

coder 2023-10-13 原文

所以,我有一个带有如下 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/

有关mysql - Entity Framework Core 2 HasDefaultValueSql() 不适用于 MySQL的更多相关文章

随机推荐