using Microsoft.EntityFrameworkCore; using Persistence.Database.Entity; namespace Persistence.Database.Model; public partial class PersistenceDbContext : DbContext { public DbSet<DataSaub> DataSaub => Set<DataSaub>(); public DbSet<ChangeLog> ChangeLog => Set<ChangeLog>(); public DbSet<Setpoint> Setpoint => Set<Setpoint>(); public DbSet<TechMessage> TechMessage => Set<TechMessage>(); public DbSet<TimestampedSet> TimestampedSets => Set<TimestampedSet>(); public PersistenceDbContext() : base() { } public PersistenceDbContext(DbContextOptions<PersistenceDbContext> options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) optionsBuilder.UseNpgsql("Host=localhost;Database=persistence;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True;" //, builder=>builder.EnableRetryOnFailure(2, System.TimeSpan.FromMinutes(1)) ); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.HasPostgresExtension("adminpack") .HasAnnotation("Relational:Collation", "Russian_Russia.1251"); modelBuilder.Entity<TimestampedSet>() .Property(e => e.Set) .HasJsonConversion(); modelBuilder.Entity<TechMessage>(entity => { entity.HasOne(t => t.System) .WithMany() .HasForeignKey(t => t.SystemId) .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity<ChangeLog>() .Property(e => e.Value) .HasJsonConversion(); } }