using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; namespace AyaNova.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 License { 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 Contract { get; set; } public virtual DbSet ContractPartOverride { get; set; } public virtual DbSet ContractServiceRate { get; set; } public virtual DbSet ContractServiceRateOverride { get; set; } public virtual DbSet ContractTravelRate { get; set; } public virtual DbSet ContractTravelRateOverride { get; set; } public virtual DbSet HeadOffice { get; set; } public virtual DbSet LoanUnit { 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 Part { get; set; } public virtual DbSet PartInventory { get; set; } public virtual DbSet PartWarehouse { get; set; } public virtual DbSet PartStockLevel { get; set; } public virtual DbSet PartSerial { get; set; } public virtual DbSet PartAssembly { get; set; } public virtual DbSet PartAssemblyItem { get; set; } public virtual DbSet Project { get; set; } public virtual DbSet PurchaseOrder { get; set; } public virtual DbSet PurchaseOrderItem { get; set; } public virtual DbSet Unit { get; set; } public virtual DbSet UnitModel { get; set; } public virtual DbSet UnitMeterReading { get; set; } public virtual DbSet Vendor { get; set; } public virtual DbSet TaxCode { get; set; } public virtual DbSet ServiceRate { get; set; } public virtual DbSet TravelRate { get; set; } public virtual DbSet CustomerServiceRequest { get; set; } public virtual DbSet TaskGroup { get; set; } public virtual DbSet TaskGroupItem { get; set; } //WorkOrder public virtual DbSet WorkOrder { get; set; } public virtual DbSet WorkOrderItem { get; set; } public virtual DbSet WorkOrderState { get; set; } public virtual DbSet WorkOrderItemExpense { get; set; } public virtual DbSet WorkOrderItemLabor { get; set; } public virtual DbSet WorkOrderItemLoan { get; set; } public virtual DbSet WorkOrderItemPart { get; set; } public virtual DbSet WorkOrderItemPartRequest { get; set; } public virtual DbSet WorkOrderItemScheduledUser { get; set; } public virtual DbSet WorkOrderItemTask { get; set; } public virtual DbSet WorkOrderItemTravel { get; set; } public virtual DbSet WorkOrderItemUnit { get; set; } public virtual DbSet WorkOrderItemOutsideService { get; set; } public virtual DbSet WorkOrderStatus { get; set; } public virtual DbSet WorkOrderItemPriority { get; set; } public virtual DbSet WorkOrderItemStatus { get; set; } //Quote public virtual DbSet Quote { get; set; } public virtual DbSet QuoteItem { get; set; } public virtual DbSet QuoteState { get; set; } public virtual DbSet QuoteItemExpense { get; set; } public virtual DbSet QuoteItemLabor { get; set; } public virtual DbSet QuoteItemLoan { get; set; } public virtual DbSet QuoteItemPart { get; set; } public virtual DbSet QuoteItemScheduledUser { get; set; } public virtual DbSet QuoteItemTask { get; set; } public virtual DbSet QuoteItemTravel { get; set; } public virtual DbSet QuoteItemUnit { get; set; } public virtual DbSet QuoteItemOutsideService { get; set; } public virtual DbSet QuoteStatus { get; set; } //PM public virtual DbSet PM { get; set; } public virtual DbSet PMItem { get; set; } public virtual DbSet PMItemExpense { get; set; } public virtual DbSet PMItemLabor { get; set; } public virtual DbSet PMItemLoan { get; set; } public virtual DbSet PMItemPart { get; set; } public virtual DbSet PMItemScheduledUser { get; set; } public virtual DbSet PMItemTask { get; set; } public virtual DbSet PMItemTravel { get; set; } public virtual DbSet PMItemUnit { get; set; } public virtual DbSet PMItemOutsideService { get; set; } public virtual DbSet Logo { get; set; } public virtual DbSet Report { get; set; } public virtual DbSet DashboardView { get; set; } // public virtual DbSet ServiceBank { get; set; } public virtual DbSet ViewRestockRequired { get; set; } public virtual DbSet ViewPartInventoryList { get; set; } public virtual DbSet ViewUnfulfilledPartRequestList { get; set; } public virtual DbSet ViewPartInventoryRequestList { get; set; } public virtual DbSet ViewScheduleWorkOrder { 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; } //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.Serial).UseIdentityByDefaultColumn(); modelBuilder.Entity().Property(z => z.Serial).UseIdentityByDefaultColumn(); modelBuilder.Entity().Property(z => z.Serial).UseIdentityByDefaultColumn(); modelBuilder.Entity().Property(z => z.Serial).UseIdentityByDefaultColumn(); //## NOTE: if more added here then must also update globalbizsettingscontroller.seeds and client ////////////////////////////////////////////////////////////// //----------- } } }