參考
Docs – What's New in EF Core 8
Support DateOnly and TimeOnly
SQL Server 早在 2008 年就已經支持 date 和 time 類型了。反觀 .NET 一直到 6.0 才支持 DateOnly 和 TimeOnly 類型。
而 EF Core 更是直到 2023 年 8.0 版本才支持。
不需要任何配置,直接用就可以了
public class Person { public int Id { get; set; } public DateOnly StartDate { get; set; } public TimeOnly TimeOfDay { get; set; } }
SQL
Program.cs
var app = builder.Build(); using var scope = app.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>(); var person = new Person { Name = "Derrick", StartDate = new DateOnly(2023, 1, 1), TimeOfDay = new TimeOnly(16, 50) }; db.People.Add(person); db.SaveChanges(); var person1 = db.People.FirstOrDefault(e => e.StartDate == new DateOnly(2023, 1, 1));
語句
.NET 6.0 & 7.0 Polyfill
6.0,7.0 如果也想使用 DateOnly 和 TimeOnly 可以使用 Polyfill。Github – ErikEJ / EFCore.SqlServer.DateOnlyTimeOnly
安裝
在 Program.cs config SQL Server 時多加一句
這樣就可以了。8.0 後就把這些 remove 掉,就可以了。
OData
odata v8.0.7 就支持 DateOnly 和 TimeOnly 了。所以一早就可以搭配 EF Core Polyfill 使用了哦
注: query 的 value 不需要 quote 哦
是 eq 2023-01-01 而不是 eq '2023-01-01',不要搞錯哦
response