网站建设企业网银e路通,移动互联网站开发与维护,网站建设 招聘,装饰公司网站方案前言上次#xff0c;我们发现《DateOnly 和 TimeOnly 类型居然不能序列化》。但问题还不仅仅如此。问题重现假设有下列实体类#xff1a;public class User
{public int Id { get; set; }public string Name { get; set; } public DateOnly Birthday { get; set; }
}由… 前言上次我们发现《DateOnly 和 TimeOnly 类型居然不能序列化》。但问题还不仅仅如此。问题重现假设有下列实体类public class User
{public int Id { get; set; }public string Name { get; set; } public DateOnly Birthday { get; set; }
}由于Birthday只需要日期所以我们使用了DateOnly类型。但是在使用 EF Core 6 存储到数据库时出现如下错误由于数据库没有 DateOnly 类型我们使用的是 datetime 类型结果DateOnly不能被 Map 成datetime数据库类型。重载 OnModelCreating根据提示我们重载了OnModelCreating方法发现有个HasColumnType方法用于配置属性在面向关系数据库时映射到的列的数据类型modelBuilder.EntityUser().Property(t t.Birthday).HasColumnType(datetime);但是没有任何效果。HasConversion 方法继续查找发现还有个HasConversion方法用于配置属性以便在写入数据库之前转换属性值并在从数据库中进行读取时转换回modelBuilder.EntityUser().Property(t t.Birthday).HasConversion(d d.ToDateTime(TimeOnly.MinValue),d DateOnly.FromDateTime(d));现在EF Core 6 已经可以正确地处理 DateOnly并使用datetime数据库类型来存储它。结论今天我们介绍了使用转换器来告诉 EF Core 6 如何处理 DateOnly。添加微信号【MyIO666】邀你加入技术交流群