Skip to content

Instantly share code, notes, and snippets.

@Eonasdan
Created April 15, 2020 20:30
Show Gist options
  • Select an option

  • Save Eonasdan/f067617bbf53df7cbae5015704870f76 to your computer and use it in GitHub Desktop.

Select an option

Save Eonasdan/f067617bbf53df7cbae5015704870f76 to your computer and use it in GitHub Desktop.
Read dates from SQL as UTC in EF Core
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
//....
var dateTimeConverter = new ValueConverter<DateTime, DateTime>(
v => v.ToUniversalTime(),
v => DateTime.SpecifyKind(v, DateTimeKind.Utc));
var nullableDateTimeConverter = new ValueConverter<DateTime?, DateTime?>(
v => v.HasValue ? v.Value.ToUniversalTime() : v,
v => v.HasValue ? DateTime.SpecifyKind(v.Value, DateTimeKind.Utc) : v);
foreach (var property in builder.Model.GetEntityTypes().Where(entity => !entity.IsQueryType).SelectMany(entity => entity.GetProperties()))
{
if (property.ClrType == typeof(DateTime))
{
property.SetValueConverter(dateTimeConverter);
}
else if (property.ClrType == typeof(DateTime?))
{
property.SetValueConverter(nullableDateTimeConverter);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment