Created
April 15, 2020 20:30
-
-
Save Eonasdan/f067617bbf53df7cbae5015704870f76 to your computer and use it in GitHub Desktop.
Read dates from SQL as UTC in EF Core
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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