gpt4 book ai didi

c# - 日期时间类型的所有属性上的 EF CORE 2.1 HasConversion

转载 作者:可可西里 更新时间:2023-11-01 08:03:07 25 4
gpt4 key购买 nike

我之前在读取实体时使用 DateTimeKindEntityMaterializerSource ( Git ) 将所有 DateTime 转换为 UTC,因为未指定默认值。

对于 EF core 2.1,DateTimeKindEntityMaterializerSource 不再有效,但我们实际上可以这样做

         builder
.Entity<ESDataQuotation>()
.Property(e => e.CreatedDate)
.HasConversion(v => v, v => DateTime.SpecifyKind(v, DateTimeKind.Utc));

但是,我有 DateTime 的许多属性,我想是否有一种方法可以对 DateTime 类型的所有属性进行转换。

最佳答案

摘自 EF Core 2.1 Value Conversions文档主题:

There is currently no way to specify in one place that every property of a given type must use the same value converter. This feature will be considered for a future release.

在那之前,您可以在 OnModelCreating 覆盖的末尾使用典型的循环,其中会发现所有实体类型和属性:

var dateTimeConverter = new ValueConverter<DateTime, DateTime>(
v => v, v => DateTime.SpecifyKind(v, DateTimeKind.Utc));

foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
foreach (var property in entityType.GetProperties())
{
if (property.ClrType == typeof(DateTime) || property.ClrType == typeof(DateTime?))
property.SetValueConverter(dateTimeConverter);
}
}

关于c# - 日期时间类型的所有属性上的 EF CORE 2.1 HasConversion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50727860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com