59 lines
1.7 KiB
C#
59 lines
1.7 KiB
C#
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();
|
|
}
|
|
}
|