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