簡體   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