using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; namespace Sockeye.Models { public partial class AyContext : DbContext { public virtual DbSet SchemaVersion { get; set; } public virtual DbSet MetricMM { get; set; } public virtual DbSet MetricDD { get; set; } public virtual DbSet User { get; set; } public virtual DbSet UserOptions { get; set; } public virtual DbSet GlobalBizSettings { get; set; } public virtual DbSet GlobalOpsBackupSettings { get; set; } public virtual DbSet GlobalOpsNotificationSettings { get; set; } public virtual DbSet Event { get; set; } public virtual DbSet SearchDictionary { get; set; } public virtual DbSet SearchKey { get; set; } public virtual DbSet FileAttachment { get; set; } public virtual DbSet OpsJob { get; set; } public virtual DbSet OpsJobLog { get; set; } public virtual DbSet Translation { get; set; } public virtual DbSet TranslationItem { get; set; } public virtual DbSet DataListSavedFilter { get; set; } public virtual DbSet DataListColumnView { get; set; } public virtual DbSet Tag { get; set; } public virtual DbSet FormCustom { get; set; } public virtual DbSet FormUserOptions { get; set; } public virtual DbSet PickListTemplate { get; set; } public virtual DbSet Memo { get; set; } public virtual DbSet Reminder { get; set; } public virtual DbSet Review { get; set; } public virtual DbSet Customer { get; set; } public virtual DbSet CustomerNote { get; set; } public virtual DbSet HeadOffice { get; set; } public virtual DbSet NotifySubscription { get; set; } public virtual DbSet NotifyEvent { get; set; } public virtual DbSet InAppNotification { get; set; } public virtual DbSet NotifyDeliveryLog { get; set; } public virtual DbSet Logo { get; set; } public virtual DbSet Report { get; set; } public virtual DbSet DashboardView { get; set; } public virtual DbSet CustomerNotifySubscription { get; set; } public virtual DbSet CustomerNotifyEvent { get; set; } public virtual DbSet CustomerNotifyDeliveryLog { get; set; } public virtual DbSet Integration { get; set; } public virtual DbSet IntegrationItem { get; set; } public virtual DbSet IntegrationLog { get; set; } public virtual DbSet License { get; set; } public virtual DbSet Vendor { get; set; } public virtual DbSet Product { get; set; } public virtual DbSet Purchase { get; set; } public virtual DbSet VendorNotification { get; set; } public virtual DbSet TrialLicenseRequest { get; set; } public virtual DbSet GZCase { get; set; } public virtual DbSet SubscriptionServer { get; set; } public virtual DbSet Subscription { get; set; } public virtual DbSet SubscriptionItem { get; set; } //Note: had to add this constructor to work with the code in startup.cs that gets the connection string from the appsettings.json file //and commented out the above on configuring public AyContext(DbContextOptions options) : base(options) { } //https://stackoverflow.com/a/64053832/8939 public void Replace(TEntity oldEntity, TEntity newEntity) where TEntity : class { ChangeTracker.TrackGraph(oldEntity, e => e.Entry.State = EntityState.Deleted); ChangeTracker.TrackGraph(newEntity, e => e.Entry.State = e.Entry.IsKeySet ? EntityState.Modified : EntityState.Added); } protected override void OnModelCreating(ModelBuilder modelBuilder) { //AUTOMATICALLY MATCH NAMES //https://andrewlock.net/customising-asp-net-core-identity-ef-core-naming-conventions-for-postgresql/ foreach (var entity in modelBuilder.Model.GetEntityTypes()) { // Replace table names var entityName = entity.GetTableName().ToLowerInvariant(); if (!entityName.StartsWith("view")) entity.SetTableName("a" + entityName); else entity.SetTableName(entityName); // Replace column names foreach (var property in entity.GetProperties()) { //Any object that has a concurrencytoken field //set it up to work properly with PostgreSQL if (property.Name == "Concurrency") { property.SetColumnName("xmin"); property.SetColumnType("xid"); property.ValueGenerated = ValueGenerated.OnAddOrUpdate; property.IsConcurrencyToken = true; } else property.SetColumnName(property.Name.ToLowerInvariant()); } foreach (var key in entity.GetKeys()) key.SetName(key.GetName().ToLowerInvariant()); foreach (var key in entity.GetForeignKeys()) key.SetConstraintName(key.GetConstraintName().ToLowerInvariant()); foreach (var index in entity.GetIndexes()) index.SetDatabaseName(index.GetDatabaseName().ToLowerInvariant()); } /////////////////////////////// //SERIALIZED OBJECTS // modelBuilder.Entity().Property(z => z.CaseId).UseIdentityByDefaultColumn(); //## NOTE: if more added here then must also update globalbizsettingscontroller.seeds and client ////////////////////////////////////////////////////////////// //----------- } } }