实体框架核心2 HasDefaultValueSql()不与MySQL一起使用

时间:2018-03-01 10:18:14

标签: mysql entity-framework entity-framework-core ef-migrations ef-core-2.0

所以,我有一个像这样的道具的模型:

public DateTime Date { get; set; }

我试图为此字段设置默认值,如下所示:

modelBuilder.Entity<Record>().Property(r => r.Date).HasDefaultValueSql("NOW()");

问题是数据库列的默认值未设置。当我使用&#34; NOW()&#34;函数,迁移工作,但正如我所说,列默认不在数据库中设置。当我尝试其他MySql日期时间函数时,我收到此错误:

您的SQL语法出错;查看与您的MariaDB服务器版本对应的手册,以获得在&#39;&#39;附近使用的正确语法。第1行

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

我认为您必须使用“ getdate()”而不是“ NOW()

答案 1 :(得分:0)

我遇到了完全相同的问题,而我from itertools import combinations def divisibleSumPairs(n,ar,k): pairs = [] for com in combinations(ar,2): if sum(com) % k == 0: pairs.append(com) return len(pairs) nk = input().split() n = int(nk[0]) k = int(nk[1]) ar = list(map(int, input().rstrip().split())) print(divisibleSumPairs(n,ar,k)) 自己制作了迁移文件,如this tutorial所述。

.Net

我没想到自动生成的代码会出现任何错误! 但是,这不是我的错,也不是.Net错误。

问题实际上来自Pomelo.EntityFrameworkCore.MySql库中的错误。我与开发者here进行了讨论。

正如我所说:

所以您必须删除单引号...

我删除了单引号和问题resolved

最后的解决方案是:

entity.Property(e => e.ValidFrom)
                    .HasColumnName("valid_from")
                    .HasColumnType("datetime")
                    .HasDefaultValueSql("'current_timestamp()'"); //<-- Line of problem!

无论如何,他们说他们也将很快为MariaDB解决它。