using System.Linq.Expressions; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Kynareth.Models; public class KynarethDbContext : DbContext { public DbSet Calls { get; set; } public DbSet Tokens { get; set; } public KynarethDbContext() : base() { ChangeTracker.LazyLoadingEnabled = true; } public KynarethDbContext(DbContextOptions options) : base(options) { ChangeTracker.LazyLoadingEnabled = true; } protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder) { configurationBuilder .Properties() .HaveConversion(); } } /// /// Deserializes DateTime so if its Kind is Unspecified then it's set to Utc. /// Does nothing on Serialization as SQL Server discards this info when saving to DateTime fields. /// public class DateTimeToUtcConverter : ValueConverter { public DateTimeToUtcConverter() : base(Serialize, Deserialize, null) { } static Expression> Deserialize = x => x.Kind == DateTimeKind.Unspecified ? DateTime.SpecifyKind(x, DateTimeKind.Utc) : x; static Expression> Serialize = x => x; }