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 Widget { 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 DataListView { get; set; } public virtual DbSet Tag { get; set; } public virtual DbSet FormCustom { 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 HeadOffice { get; set; } public virtual DbSet LoanUnit { get; set; } public virtual DbSet NotifySubscription { get; set; } public virtual DbSet NotifyEvent { get; set; } public virtual DbSet Notification { get; set; } public virtual DbSet NotifyDeliveryLog { get; set; } public virtual DbSet Part { get; set; } public virtual DbSet PM { get; set; } public virtual DbSet PMItem { get; set; } public virtual DbSet PMTemplate { get; set; } public virtual DbSet PMTemplateItem { get; set; } public virtual DbSet Project { get; set; } public virtual DbSet PurchaseOrder { get; set; } public virtual DbSet Quote { get; set; } public virtual DbSet QuoteItem { get; set; } public virtual DbSet QuoteTemplate { get; set; } public virtual DbSet QuoteTemplateItem { get; set; } public virtual DbSet Unit { get; set; } public virtual DbSet UnitModel { 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; } //WorkOrder public virtual DbSet WorkOrder { get; set; } public virtual DbSet WorkOrderItem { 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; } //WorkOrderTemplate public virtual DbSet WorkOrderTemplate { get; set; } public virtual DbSet WorkOrderTemplateItem { 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; } //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) { } 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 entity.SetTableName("a" + entity.GetTableName().ToLowerInvariant()); // 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(); ////////////////////////////////////////////////////////////// //----------- } } }