/****************************************************************************** // MARECHAI: Master repository of computing history artifacts information // ---------------------------------------------------------------------------- // // Author(s) : Natalia Portillo // // --[ License ] -------------------------------------------------------------- // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // ---------------------------------------------------------------------------- // Copyright © 2003-2020 Natalia Portillo *******************************************************************************/ using System; using System.Collections.Generic; using System.Threading.Tasks; using Marechai.Database.Schemas; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Microsoft.Extensions.Configuration; namespace Marechai.Database.Models { public class MarechaiContext : IdentityDbContext { readonly ValueConverter hexToBytesConverter = new(v => HexStringToBytesConverter.StringToHex(v), v => HexStringToBytesConverter.HexToString(v)); public MarechaiContext() {} public MarechaiContext(DbContextOptions options) : base(options) {} public virtual DbSet Audit { get; set; } public virtual DbSet Books { get; set; } public virtual DbSet BooksByMachines { get; set; } public virtual DbSet BooksByMachineFamilies { get; set; } public virtual DbSet BookScans { get; set; } public virtual DbSet BrowserTests { get; set; } public virtual DbSet CompaniesByBooks { get; set; } public virtual DbSet CompaniesByDocuments { get; set; } public virtual DbSet CompaniesByMagazines { get; set; } public virtual DbSet CompaniesBySoftwareFamilies { get; set; } public virtual DbSet CompaniesBySoftwareVariants { get; set; } public virtual DbSet CompaniesBySoftwareVersions { get; set; } public virtual DbSet Companies { get; set; } public virtual DbSet CompanyDescriptions { get; set; } public virtual DbSet CompanyLogos { get; set; } public virtual DbSet CurrenciesInflation { get; set; } public virtual DbSet CurrenciesPegging { get; set; } public virtual DbSet Files { get; set; } public virtual DbSet Documents { get; set; } public virtual DbSet DocumentCompanies { get; set; } public virtual DbSet DocumentPeople { get; set; } public virtual DbSet DocumentRoles { get; set; } public virtual DbSet DocumentsByMachines { get; set; } public virtual DbSet DocumentsByMachineFamilies { get; set; } public virtual DbSet DocumentScans { get; set; } public virtual DbSet Dumps { get; set; } public virtual DbSet DumpHardwares { get; set; } public virtual DbSet FileDataStreams { get; set; } public virtual DbSet Filesystems { get; set; } public virtual DbSet FilesystemsByLogicalPartition { get; set; } public virtual DbSet Forbidden { get; set; } public virtual DbSet Gpus { get; set; } public virtual DbSet GpusByMachine { get; set; } public virtual DbSet GpusByOwnedMachine { get; set; } public virtual DbSet InstructionSets { get; set; } public virtual DbSet InstructionSetExtensions { get; set; } public virtual DbSet InstructionSetExtensionsByProcessor { get; set; } public virtual DbSet Iso31661Numeric { get; set; } public virtual DbSet Iso4217 { get; set; } public virtual DbSet Iso639 { get; set; } public virtual DbSet Licenses { get; set; } public virtual DbSet Log { get; set; } public virtual DbSet LogicalPartitions { get; set; } public virtual DbSet Machines { get; set; } public virtual DbSet MachineFamilies { get; set; } public virtual DbSet MachinePhotos { get; set; } public virtual DbSet Magazines { get; set; } public virtual DbSet MagazineIssues { get; set; } public virtual DbSet MagazinesByMachines { get; set; } public virtual DbSet MagazinesByMachinesFamilies { get; set; } public virtual DbSet MagazineScans { get; set; } public virtual DbSet MarechaiDb { get; set; } public virtual DbSet MasteringTexts { get; set; } public virtual DbSet Media { get; set; } public virtual DbSet MediaDumps { get; set; } public virtual DbSet MediaDumpFileImages { get; set; } public virtual DbSet MediaDumpImages { get; set; } public virtual DbSet MediaDumpSubchannelImages { get; set; } public virtual DbSet MediaDumpTrackImages { get; set; } public virtual DbSet MediaFiles { get; set; } public virtual DbSet MediaTagDumps { get; set; } public virtual DbSet MemoryByMachine { get; set; } public virtual DbSet MemoryByOwnedMachine { get; set; } public virtual DbSet MoneyDonations { get; set; } public virtual DbSet News { get; set; } public virtual DbSet OwnedMachines { get; set; } public virtual DbSet OwnedMachinePhotos { get; set; } public virtual DbSet PeopleByBooks { get; set; } public virtual DbSet PeopleByDocuments { get; set; } public virtual DbSet PeopleByMagazines { get; set; } public virtual DbSet People { get; set; } public virtual DbSet Processors { get; set; } public virtual DbSet ProcessorsByMachine { get; set; } public virtual DbSet ProcessorsByOwnedMachine { get; set; } public virtual DbSet Resolutions { get; set; } public virtual DbSet ResolutionsByGpu { get; set; } public virtual DbSet ResolutionsByScreen { get; set; } public virtual DbSet Screens { get; set; } public virtual DbSet ScreensByMachine { get; set; } public virtual DbSet SoftwareFamilies { get; set; } public virtual DbSet SoftwareVariants { get; set; } public virtual DbSet SoftwareVariantByCompilationMedia { get; set; } public virtual DbSet SoftwareVersions { get; set; } public virtual DbSet SoundByMachine { get; set; } public virtual DbSet SoundByOwnedMachine { get; set; } public virtual DbSet SoundSynths { get; set; } public virtual DbSet StandaloneFiles { get; set; } public virtual DbSet StorageByMachine { get; set; } public virtual DbSet StorageByOwnedMachine { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if(optionsBuilder.IsConfigured) return; IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); IConfigurationRoot configuration = builder.Build(); optionsBuilder. UseMySql(configuration.GetConnectionString("DefaultConnection"), new MariaDbServerVersion(new Version(10, 5, 0)), b => b.UseMicrosoftJson()). UseLazyLoadingProxies(); } public async Task SaveChangesWithUserAsync(string userId) { ChangeTracker.DetectChanges(); List audits = new(); foreach(EntityEntry entry in ChangeTracker.Entries()) { if(entry.Entity is Audit || entry.State == EntityState.Detached || entry.State == EntityState.Unchanged) continue; var audit = new Audit(); audit.UserId = userId; audit.Table = entry.Metadata.GetTableName(); Dictionary keys = new(); Dictionary olds = new(); Dictionary news = new(); List columns = new(); foreach(PropertyEntry property in entry.Properties) { string propertyName = property.Metadata.Name; string columnName = property.Metadata.GetColumnName(); if(property.Metadata.IsPrimaryKey()) { keys[propertyName] = property.CurrentValue; continue; } switch(entry.State) { case EntityState.Deleted: audit.Type = AuditType.Deleted; olds[propertyName] = property.CurrentValue; break; case EntityState.Modified: if(property.IsModified) { audit.Type = AuditType.Updated; news[propertyName] = property.CurrentValue; olds[propertyName] = property.OriginalValue; columns.Add(columnName); } break; case EntityState.Added: audit.Type = AuditType.Created; news[propertyName] = property.CurrentValue; break; } } if(keys.Count > 0) audit.Keys = keys; if(olds.Count > 0) audit.OldValues = olds; if(news.Count > 0) audit.NewValues = news; if(columns.Count > 0) audit.AffectedColumns = columns; audits.Add(audit); } await Audit.AddRangeAsync(audits); return await SaveChangesAsync(); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Title); entity.HasIndex(e => e.NativeTitle); entity.HasIndex(e => e.Published); entity.HasIndex(e => e.CountryId); entity.HasIndex(e => e.Synopsis).IsFullText(); entity.HasIndex(e => e.Isbn); entity.HasIndex(e => e.Pages); entity.HasIndex(e => e.Edition); entity.HasOne(d => d.Previous).WithOne(d => d.Next).HasForeignKey(d => d.PreviousId). OnDelete(DeleteBehavior.ClientSetNull); entity.HasOne(d => d.Source).WithMany(d => d.Derivates).HasForeignKey(d => d.SourceId). OnDelete(DeleteBehavior.ClientSetNull); entity.HasOne(d => d.Country).WithMany(p => p.Books).HasForeignKey(d => d.CountryId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.BookId); entity.HasIndex(e => e.MachineId); entity.HasOne(d => d.Book).WithMany(p => p.Machines).HasForeignKey(d => d.BookId); entity.HasOne(d => d.Machine).WithMany(p => p.Books).HasForeignKey(d => d.MachineId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.BookId); entity.HasIndex(e => e.MachineFamilyId); entity.HasOne(d => d.Book).WithMany(p => p.MachineFamilies).HasForeignKey(d => d.BookId); entity.HasOne(d => d.MachineFamily).WithMany(p => p.Books).HasForeignKey(d => d.MachineFamilyId); }); modelBuilder.Entity(entity => { entity.ToTable("browser_tests"); entity.HasIndex(e => e.Browser).HasDatabaseName("idx_browser_tests_browser"); entity.HasIndex(e => e.Os).HasDatabaseName("idx_browser_tests_os"); entity.HasIndex(e => e.Platform).HasDatabaseName("idx_browser_tests_platform"); entity.HasIndex(e => e.UserAgent).HasDatabaseName("idx_browser_tests_user_agent"); entity.HasIndex(e => e.Version).HasDatabaseName("idx_browser_tests_version"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.Agif).HasColumnName("agif").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Browser).IsRequired().HasColumnName("browser").HasColumnType("varchar(64)"). HasDefaultValueSql("''"); entity.Property(e => e.Colors).HasColumnName("colors").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Flash).HasColumnName("flash").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Frames).HasColumnName("frames").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Gif87).HasColumnName("gif87").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Gif89).HasColumnName("gif89").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Jpeg).HasColumnName("jpeg").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Js).HasColumnName("js").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'"); entity.Property(e => e.Os).IsRequired().HasColumnName("os").HasColumnType("varchar(32)"). HasDefaultValueSql("''"); entity.Property(e => e.Platform).IsRequired().HasColumnName("platform").HasColumnType("varchar(8)"). HasDefaultValueSql("''"); entity.Property(e => e.Png).HasColumnName("png").HasColumnType("tinyint(1)").HasDefaultValueSql("'0'"); entity.Property(e => e.Pngt).HasColumnName("pngt").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Table).HasColumnName("table").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.UserAgent).IsRequired().HasColumnName("user_agent"). HasColumnType("varchar(128)").HasDefaultValueSql("''"); entity.Property(e => e.Version).IsRequired().HasColumnName("version").HasColumnType("varchar(16)"). HasDefaultValueSql("''"); }); modelBuilder.Entity(entity => { entity.ToTable("marechai_db"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.Updated).HasColumnName("updated").HasColumnType("datetime"). HasDefaultValueSql("CURRENT_TIMESTAMP"); entity.Property(e => e.Version).HasColumnName("version").HasColumnType("int(11)"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.BookId); entity.HasIndex(e => e.CompanyId); entity.HasIndex(e => e.RoleId); entity.HasOne(d => d.Book).WithMany(p => p.Companies).HasForeignKey(d => d.BookId); entity.HasOne(d => d.Company).WithMany(p => p.Books).HasForeignKey(d => d.CompanyId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.DocumentId); entity.HasIndex(e => e.CompanyId); entity.HasIndex(e => e.RoleId); entity.HasOne(d => d.Document).WithMany(p => p.Companies).HasForeignKey(d => d.DocumentId); entity.HasOne(d => d.Company).WithMany(p => p.Documents).HasForeignKey(d => d.CompanyId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.MagazineId); entity.HasIndex(e => e.CompanyId); entity.HasIndex(e => e.RoleId); entity.HasOne(d => d.Magazine).WithMany(p => p.Companies).HasForeignKey(d => d.MagazineId); entity.HasOne(d => d.Company).WithMany(p => p.Magazines).HasForeignKey(d => d.CompanyId); }); modelBuilder.Entity(entity => { entity.ToTable("companies"); entity.HasIndex(e => e.Address).HasDatabaseName("idx_companies_address"); entity.HasIndex(e => e.City).HasDatabaseName("idx_companies_city"); entity.HasIndex(e => e.CountryId).HasDatabaseName("idx_companies_country"); entity.HasIndex(e => e.Facebook).HasDatabaseName("idx_companies_facebook"); entity.HasIndex(e => e.Founded).HasDatabaseName("idx_companies_founded"); entity.HasIndex(e => e.Name).HasDatabaseName("idx_companies_name"); entity.HasIndex(e => e.PostalCode).HasDatabaseName("idx_companies_postal_code"); entity.HasIndex(e => e.Province).HasDatabaseName("idx_companies_province"); entity.HasIndex(e => e.Sold).HasDatabaseName("idx_companies_sold"); entity.HasIndex(e => e.SoldToId).HasDatabaseName("idx_companies_sold_to"); entity.HasIndex(e => e.Status).HasDatabaseName("idx_companies_status"); entity.HasIndex(e => e.Twitter).HasDatabaseName("idx_companies_twitter"); entity.HasIndex(e => e.Website).HasDatabaseName("idx_companies_website"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.Address).HasColumnName("address").HasColumnType("varchar(80)"); entity.Property(e => e.City).HasColumnName("city").HasColumnType("varchar(80)"); entity.Property(e => e.CountryId).HasColumnName("country").HasColumnType("smallint(3)"); entity.Property(e => e.Facebook).HasColumnName("facebook").HasColumnType("varchar(45)"); entity.Property(e => e.Founded).HasColumnName("founded").HasColumnType("datetime"); entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("varchar(128)"). HasDefaultValueSql("''"); entity.Property(e => e.PostalCode).HasColumnName("postal_code").HasColumnType("varchar(25)"); entity.Property(e => e.Province).HasColumnName("province").HasColumnType("varchar(80)"); entity.Property(e => e.Sold).HasColumnName("sold").HasColumnType("datetime"); entity.Property(e => e.SoldToId).HasColumnName("sold_to").HasColumnType("int(11)"); entity.Property(e => e.Status).HasColumnName("status").HasColumnType("int(11)"); entity.Property(e => e.Twitter).HasColumnName("twitter").HasColumnType("varchar(45)"); entity.Property(e => e.Website).HasColumnName("website").HasColumnType("varchar(255)"); entity.HasOne(d => d.Country).WithMany(p => p.Companies).HasForeignKey(d => d.CountryId). HasConstraintName("fk_companies_country"); entity.HasOne(d => d.SoldTo).WithMany(p => p.InverseSoldToNavigation).HasForeignKey(d => d.SoldToId). HasConstraintName("fk_companies_sold_to"); entity.HasOne(d => d.DocumentCompany).WithOne(p => p.Company). HasForeignKey(d => d.CompanyId).OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity().HasIndex(e => e.Text).IsFullText(); modelBuilder.Entity(entity => { entity.HasKey(e => new { e.Id, e.CompanyId, LogoGuid = e.Guid }); entity.ToTable("company_logos"); entity.HasIndex(e => e.CompanyId).HasDatabaseName("idx_company_id"); entity.HasIndex(e => e.Id).HasDatabaseName("idx_id").IsUnique(); entity.HasIndex(e => e.Guid).HasDatabaseName("idx_guid"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)").ValueGeneratedOnAdd(); entity.Property(e => e.CompanyId).HasColumnName("company_id").HasColumnType("int(11)"); entity.Property(e => e.Guid).HasColumnName("logo_guid").HasColumnType("char(36)"); entity.Property(e => e.Year).HasColumnName("year").HasColumnType("int(4)"); entity.HasOne(d => d.Company).WithMany(p => p.Logos).HasForeignKey(d => d.CompanyId). OnDelete(DeleteBehavior.ClientSetNull).HasConstraintName("fk_company_logos_company1"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Title); entity.HasIndex(e => e.NativeTitle); entity.HasIndex(e => e.Published); entity.HasIndex(e => e.CountryId); entity.HasIndex(e => e.Synopsis).IsFullText(); entity.HasOne(d => d.Country).WithMany(p => p.Documents).HasForeignKey(d => d.CountryId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Name); entity.HasIndex(e => e.CompanyId).IsUnique(); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Name); entity.HasIndex(e => e.Surname); entity.HasIndex(e => e.PersonId).IsUnique(); entity.HasIndex(e => e.Alias); entity.HasIndex(e => e.DisplayName); entity.HasOne(d => d.Person).WithOne(p => p.DocumentPerson). HasForeignKey(d => d.DocumentPersonId).OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Name); entity.HasIndex(e => e.Enabled); entity.Property(p => p.Enabled).HasDefaultValue(true); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.DocumentId); entity.HasIndex(e => e.MachineId); entity.HasOne(d => d.Document).WithMany(p => p.Machines).HasForeignKey(d => d.DocumentId); entity.HasOne(d => d.Machine).WithMany(p => p.Documents).HasForeignKey(d => d.MachineId); }); modelBuilder.Entity(entity => { entity.ToTable("DocumentsByMachineFamily"); entity.HasIndex(e => e.DocumentId); entity.HasIndex(e => e.MachineFamilyId); entity.HasOne(d => d.Document).WithMany(p => p.MachineFamilies).HasForeignKey(d => d.DocumentId); entity.HasOne(d => d.MachineFamily).WithMany(p => p.Documents).HasForeignKey(d => d.MachineFamilyId); }); modelBuilder.Entity(entity => { entity.ToTable("forbidden"); entity.HasIndex(e => e.Browser).HasDatabaseName("idx_forbidden_browser"); entity.HasIndex(e => e.Date).HasDatabaseName("idx_forbidden_date"); entity.HasIndex(e => e.Ip).HasDatabaseName("idx_forbidden_ip"); entity.HasIndex(e => e.Referer).HasDatabaseName("idx_forbidden_referer"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.Browser).IsRequired().HasColumnName("browser").HasColumnType("char(128)"). HasDefaultValueSql("''"); entity.Property(e => e.Date).IsRequired().HasColumnName("date").HasColumnType("char(20)"). HasDefaultValueSql("''"); entity.Property(e => e.Ip).IsRequired().HasColumnName("ip").HasColumnType("char(16)"). HasDefaultValueSql("''"); entity.Property(e => e.Referer).IsRequired().HasColumnName("referer").HasColumnType("char(255)"). HasDefaultValueSql("''"); }); modelBuilder.Entity(entity => { entity.ToTable("gpus"); entity.HasIndex(e => e.CompanyId).HasDatabaseName("idx_gpus_company"); entity.HasIndex(e => e.DieSize).HasDatabaseName("idx_gpus_die_size"); entity.HasIndex(e => e.Introduced).HasDatabaseName("idx_gpus_introduced"); entity.HasIndex(e => e.ModelCode).HasDatabaseName("idx_gpus_model_code"); entity.HasIndex(e => e.Name).HasDatabaseName("idx_gpus_name"); entity.HasIndex(e => e.Package).HasDatabaseName("idx_gpus_package"); entity.HasIndex(e => e.Process).HasDatabaseName("idx_gpus_process"); entity.HasIndex(e => e.ProcessNm).HasDatabaseName("idx_gpus_process_nm"); entity.HasIndex(e => e.Transistors).HasDatabaseName("idx_gpus_transistors"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.CompanyId).HasColumnName("company").HasColumnType("int(11)"); entity.Property(e => e.DieSize).HasColumnName("die_size"); entity.Property(e => e.Introduced).HasColumnName("introduced").HasColumnType("datetime"); entity.Property(e => e.ModelCode).HasColumnName("model_code").HasColumnType("varchar(45)"); entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("char(128)"). HasDefaultValueSql("''"); entity.Property(e => e.Package).HasColumnName("package").HasColumnType("varchar(45)"); entity.Property(e => e.Process).HasColumnName("process").HasColumnType("varchar(45)"); entity.Property(e => e.ProcessNm).HasColumnName("process_nm"); entity.Property(e => e.Transistors).HasColumnName("transistors").HasColumnType("bigint(20)"); entity.HasOne(d => d.Company).WithMany(p => p.Gpus).HasForeignKey(d => d.CompanyId). HasConstraintName("fk_gpus_company"); }); modelBuilder.Entity(entity => { entity.ToTable("gpus_by_machine"); entity.HasIndex(e => e.GpuId).HasDatabaseName("idx_gpus_by_machine_gpus"); entity.HasIndex(e => e.MachineId).HasDatabaseName("idx_gpus_by_machine_machine"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("bigint(20)"); entity.Property(e => e.GpuId).HasColumnName("gpu").HasColumnType("int(11)"); entity.Property(e => e.MachineId).HasColumnName("machine").HasColumnType("int(11)"); entity.HasOne(d => d.Gpu).WithMany(p => p.GpusByMachine).HasForeignKey(d => d.GpuId). HasConstraintName("fk_gpus_by_machine_gpu"); entity.HasOne(d => d.Machine).WithMany(p => p.Gpus).HasForeignKey(d => d.MachineId). HasConstraintName("fk_gpus_by_machine_machine"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.GpuId); entity.HasIndex(e => e.OwnedMachineId); entity.HasOne(d => d.OwnedMachine).WithMany(p => p.Gpus).HasForeignKey(d => d.OwnedMachineId); }); modelBuilder.Entity(entity => { entity.ToTable("instruction_set_extensions"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.Extension).IsRequired().HasColumnName("extension").HasColumnType("varchar(45)"); }); modelBuilder.Entity(entity => { entity.HasKey(e => new { e.Id, e.ProcessorId, e.ExtensionId }); entity.ToTable("instruction_set_extensions_by_processor"); entity.HasIndex(e => e.ExtensionId).HasDatabaseName("idx_setextension_extension"); entity.HasIndex(e => e.ProcessorId).HasDatabaseName("idx_setextension_processor"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)").ValueGeneratedOnAdd(); entity.Property(e => e.ProcessorId).HasColumnName("processor_id").HasColumnType("int(11)"); entity.Property(e => e.ExtensionId).HasColumnName("extension_id").HasColumnType("int(11)"); entity.HasOne(d => d.Extension).WithMany(p => p.InstructionSetExtensionsByProcessor). HasForeignKey(d => d.ExtensionId).OnDelete(DeleteBehavior.ClientSetNull). HasConstraintName("fk_extension_extension_id"); entity.HasOne(d => d.Processor).WithMany(p => p.InstructionSetExtensions). HasForeignKey(d => d.ProcessorId).OnDelete(DeleteBehavior.ClientSetNull). HasConstraintName("fk_extension_processor_id"); }); modelBuilder.Entity(entity => { entity.ToTable("instruction_sets"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.Name).IsRequired().HasColumnName("instruction_set").HasColumnType("varchar(45)"); }); modelBuilder.Entity(entity => { entity.ToTable("iso3166_1_numeric"); entity.HasIndex(e => e.Name).HasDatabaseName("idx_name"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("smallint(3)"); entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("varchar(64)"); }); modelBuilder.Entity(entity => { entity.ToTable("ISO_639-3"); entity.HasKey(e => e.Id); entity.HasIndex(e => e.Part2B); entity.HasIndex(e => e.Part2T); entity.HasIndex(e => e.Part1); entity.HasIndex(e => e.Scope); entity.HasIndex(e => e.Type); entity.HasIndex(e => e.ReferenceName); entity.HasIndex(e => e.Comment); entity.Property(e => e.ReferenceName).HasColumnName("Ref_Name"); }); modelBuilder.Entity(entity => { entity.ToTable("log"); entity.HasIndex(e => e.Browser).HasDatabaseName("idx_log_browser"); entity.HasIndex(e => e.Date).HasDatabaseName("idx_log_date"); entity.HasIndex(e => e.Ip).HasDatabaseName("idx_log_ip"); entity.HasIndex(e => e.Referer).HasDatabaseName("idx_log_referer"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.Browser).IsRequired().HasColumnName("browser").HasColumnType("char(128)"). HasDefaultValueSql("''"); entity.Property(e => e.Date).IsRequired().HasColumnName("date").HasColumnType("char(20)"). HasDefaultValueSql("''"); entity.Property(e => e.Ip).IsRequired().HasColumnName("ip").HasColumnType("char(16)"). HasDefaultValueSql("''"); entity.Property(e => e.Referer).IsRequired().HasColumnName("referer").HasColumnType("char(255)"). HasDefaultValueSql("''"); }); modelBuilder.Entity(entity => { entity.ToTable("machine_families"); entity.HasIndex(e => e.CompanyId).HasDatabaseName("idx_machine_families_company"); entity.HasIndex(e => e.Name).HasDatabaseName("idx_machine_families_name"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.CompanyId).HasColumnName("company").HasColumnType("int(11)"); entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("varchar(255)"); entity.HasOne(d => d.Company).WithMany(p => p.MachineFamilies).HasForeignKey(d => d.CompanyId). HasConstraintName("fk_machine_families_company"); }); modelBuilder.Entity(entity => { entity.ToTable("machines"); entity.HasIndex(e => e.CompanyId).HasDatabaseName("idx_machines_company"); entity.HasIndex(e => e.FamilyId).HasDatabaseName("idx_machines_family"); entity.HasIndex(e => e.Introduced).HasDatabaseName("idx_machines_introduced"); entity.HasIndex(e => e.Model).HasDatabaseName("idx_machines_model"); entity.HasIndex(e => e.Name).HasDatabaseName("idx_machines_name"); entity.HasIndex(e => e.Type).HasDatabaseName("idx_machines_type"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.CompanyId).HasColumnName("company").HasColumnType("int(11)"). HasDefaultValueSql("'0'"); entity.Property(e => e.FamilyId).HasColumnName("family").HasColumnType("int(11)"); entity.Property(e => e.Introduced).HasColumnName("introduced").HasColumnType("datetime"); entity.Property(e => e.Model).HasColumnName("model").HasColumnType("varchar(50)"); entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("varchar(255)"); entity.Property(e => e.Type).HasColumnName("type").HasColumnType("int(11)").HasDefaultValueSql("'0'"); entity.HasOne(d => d.Company).WithMany(p => p.Machines).HasForeignKey(d => d.CompanyId). OnDelete(DeleteBehavior.ClientSetNull).HasConstraintName("fk_machines_company"); entity.HasOne(d => d.Family).WithMany(p => p.Machines).HasForeignKey(d => d.FamilyId). HasConstraintName("fk_machines_family"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.AcquisitionDate); entity.HasIndex(e => e.LostDate); entity.HasIndex(e => e.Status); entity.HasIndex(e => e.LastStatusDate); entity.HasIndex(e => e.Trade); entity.HasIndex(e => e.Boxed); entity.HasIndex(e => e.Manuals); entity.HasIndex(e => e.SerialNumber); entity.HasIndex(e => e.SerialNumberVisible); entity.Property(e => e.SerialNumberVisible).HasDefaultValue(true); entity.HasOne(d => d.User).WithMany(p => p.OwnedMachines).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Aperture); entity.HasIndex(e => e.Author); entity.HasIndex(e => e.CameraManufacturer); entity.HasIndex(e => e.CameraModel); entity.HasIndex(e => e.ColorSpace); entity.HasIndex(e => e.Comments); entity.HasIndex(e => e.Contrast); entity.HasIndex(e => e.CreationDate); entity.HasIndex(e => e.DigitalZoomRatio); entity.HasIndex(e => e.ExifVersion); entity.HasIndex(e => e.ExposureTime); entity.HasIndex(e => e.ExposureMethod); entity.HasIndex(e => e.ExposureProgram); entity.HasIndex(e => e.Flash); entity.HasIndex(e => e.Focal); entity.HasIndex(e => e.FocalLength); entity.HasIndex(e => e.FocalLengthEquivalent); entity.HasIndex(e => e.HorizontalResolution); entity.HasIndex(e => e.IsoRating); entity.HasIndex(e => e.Lens); entity.HasIndex(e => e.LightSource); entity.HasIndex(e => e.MeteringMode); entity.HasIndex(e => e.ResolutionUnit); entity.HasIndex(e => e.Orientation); entity.HasIndex(e => e.Saturation); entity.HasIndex(e => e.SceneCaptureType); entity.HasIndex(e => e.SensingMethod); entity.HasIndex(e => e.Sharpness); entity.HasIndex(e => e.SoftwareUsed); entity.HasIndex(e => e.SubjectDistanceRange); entity.HasIndex(e => e.UploadDate); entity.HasIndex(e => e.VerticalResolution); entity.HasIndex(e => e.WhiteBalance); entity.HasOne(d => d.Machine).WithMany(p => p.Photos).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.User).WithMany(p => p.Photos).OnDelete(DeleteBehavior.SetNull); entity.HasOne(d => d.License).WithMany(p => p.Photos).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Aperture); entity.HasIndex(e => e.Author); entity.HasIndex(e => e.CameraManufacturer); entity.HasIndex(e => e.CameraModel); entity.HasIndex(e => e.ColorSpace); entity.HasIndex(e => e.Comments); entity.HasIndex(e => e.Contrast); entity.HasIndex(e => e.CreationDate); entity.HasIndex(e => e.DigitalZoomRatio); entity.HasIndex(e => e.ExifVersion); entity.HasIndex(e => e.ExposureTime); entity.HasIndex(e => e.ExposureMethod); entity.HasIndex(e => e.ExposureProgram); entity.HasIndex(e => e.Flash); entity.HasIndex(e => e.Focal); entity.HasIndex(e => e.FocalLength); entity.HasIndex(e => e.FocalLengthEquivalent); entity.HasIndex(e => e.HorizontalResolution); entity.HasIndex(e => e.IsoRating); entity.HasIndex(e => e.Lens); entity.HasIndex(e => e.LightSource); entity.HasIndex(e => e.MeteringMode); entity.HasIndex(e => e.ResolutionUnit); entity.HasIndex(e => e.Orientation); entity.HasIndex(e => e.Saturation); entity.HasIndex(e => e.SceneCaptureType); entity.HasIndex(e => e.SensingMethod); entity.HasIndex(e => e.Sharpness); entity.HasIndex(e => e.SoftwareUsed); entity.HasIndex(e => e.SubjectDistanceRange); entity.HasIndex(e => e.UploadDate); entity.HasIndex(e => e.VerticalResolution); entity.HasIndex(e => e.WhiteBalance); entity.HasOne(d => d.OwnedMachine).WithMany(p => p.Photos).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.User).WithMany(p => p.OwnedMachinePhotos).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.License).WithMany(p => p.OwnedMachinePhotos).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Title); entity.HasIndex(e => e.NativeTitle); entity.HasIndex(e => e.Published); entity.HasIndex(e => e.CountryId); entity.HasIndex(e => e.Synopsis).IsFullText(); entity.HasIndex(e => e.Issn); entity.HasIndex(e => e.FirstPublication); entity.HasOne(d => d.Country).WithMany(p => p.Magazines).HasForeignKey(d => d.CountryId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Caption); entity.HasIndex(e => e.NativeCaption); entity.HasIndex(e => e.Published); entity.HasIndex(e => e.ProductCode); entity.HasIndex(e => e.Pages); entity.HasOne(d => d.Magazine).WithMany(p => p.Issues).HasForeignKey(d => d.MagazineId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.MagazineId); entity.HasIndex(e => e.MachineId); entity.HasOne(d => d.Magazine).WithMany(p => p.Machines).HasForeignKey(d => d.MagazineId); entity.HasOne(d => d.Machine).WithMany(p => p.Magazines).HasForeignKey(d => d.MachineId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.MagazineId); entity.HasIndex(e => e.MachineFamilyId); entity.HasOne(d => d.Magazine).WithMany(p => p.MachineFamilies).HasForeignKey(d => d.MagazineId); entity.HasOne(d => d.MachineFamily).WithMany(p => p.Magazines).HasForeignKey(d => d.MachineFamilyId); }); modelBuilder.Entity(entity => { entity.ToTable("memory_by_machine"); entity.HasIndex(e => e.MachineId).HasDatabaseName("idx_memory_by_machine_machine"); entity.HasIndex(e => e.Size).HasDatabaseName("idx_memory_by_machine_size"); entity.HasIndex(e => e.Speed).HasDatabaseName("idx_memory_by_machine_speed"); entity.HasIndex(e => e.Type).HasDatabaseName("idx_memory_by_machine_type"); entity.HasIndex(e => e.Usage).HasDatabaseName("idx_memory_by_machine_usage"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("bigint(20)"); entity.Property(e => e.MachineId).HasColumnName("machine").HasColumnType("int(11)"); entity.Property(e => e.Size).HasColumnName("size").HasColumnType("bigint(20)"); entity.Property(e => e.Speed).HasColumnName("speed"); entity.Property(e => e.Type).HasColumnName("type").HasColumnType("int(11)").HasDefaultValueSql("'0'"); entity.Property(e => e.Usage).HasColumnName("usage").HasColumnType("int(11)").HasDefaultValueSql("'0'"); entity.HasOne(d => d.Machine).WithMany(p => p.Memory).HasForeignKey(d => d.MachineId). HasConstraintName("fk_memory_by_machine_machine"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.OwnedMachineId); entity.HasIndex(e => e.Size); entity.HasIndex(e => e.Speed); entity.HasIndex(e => e.Type); entity.HasIndex(e => e.Usage); entity.HasOne(d => d.OwnedMachine).WithMany(p => p.Memory).HasForeignKey(d => d.OwnedMachineId); }); modelBuilder.Entity(entity => { entity.ToTable("money_donations"); entity.HasIndex(e => e.Donator).HasDatabaseName("idx_money_donations_donator"); entity.HasIndex(e => e.Quantity).HasDatabaseName("idx_money_donations_quantity"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.Donator).IsRequired().HasColumnName("donator").HasColumnType("char(128)"). HasDefaultValueSql("''"); entity.Property(e => e.Quantity).HasColumnName("quantity").HasColumnType("decimal(11,2)"). HasDefaultValueSql("'0.00'"); }); modelBuilder.Entity(entity => { entity.ToTable("news"); entity.HasIndex(e => e.AddedId).HasDatabaseName("idx_news_ip"); entity.HasIndex(e => e.Date).HasDatabaseName("idx_news_date"); entity.HasIndex(e => e.Type).HasDatabaseName("idx_news_type"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.AddedId).HasColumnName("added_id").HasColumnType("int(11)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Date).IsRequired().HasColumnName("date").HasColumnType("datetime"); entity.Property(e => e.Type).HasColumnName("type").HasColumnType("int(11)").HasDefaultValueSql("'0'"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.PersonId); entity.HasIndex(e => e.BookId); entity.HasOne(d => d.Person).WithMany(p => p.Books).HasForeignKey(d => d.PersonId); entity.HasOne(d => d.Book).WithMany(p => p.People).HasForeignKey(d => d.BookId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.PersonId); entity.HasIndex(e => e.CompanyId); entity.HasIndex(e => e.Position); entity.HasIndex(e => e.Start); entity.HasIndex(e => e.End); entity.HasOne(d => d.Person).WithMany(p => p.Companies).HasForeignKey(d => d.PersonId); entity.HasOne(d => d.Company).WithMany(p => p.People).HasForeignKey(d => d.CompanyId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.PersonId); entity.HasIndex(e => e.DocumentId); entity.HasOne(d => d.Person).WithMany(p => p.Documents).HasForeignKey(d => d.PersonId); entity.HasOne(d => d.Document).WithMany(p => p.People).HasForeignKey(d => d.DocumentId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.PersonId); entity.HasIndex(e => e.MagazineId); entity.HasOne(d => d.Person).WithMany(p => p.Magazines).HasForeignKey(d => d.PersonId); entity.HasOne(d => d.Magazine).WithMany(p => p.People).HasForeignKey(d => d.MagazineId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Name); entity.HasIndex(e => e.Surname); entity.HasIndex(e => e.CountryOfBirthId); entity.HasIndex(e => e.BirthDate); entity.HasIndex(e => e.DeathDate); entity.HasIndex(e => e.Webpage); entity.HasIndex(e => e.Twitter); entity.HasIndex(e => e.Facebook); entity.HasIndex(e => e.Photo); entity.HasIndex(e => e.Alias); entity.HasIndex(e => e.DisplayName); entity.HasOne(d => d.CountryOfBirth).WithMany(p => p.People).HasForeignKey(d => d.CountryOfBirthId); entity.HasOne(d => d.DocumentPerson).WithOne(p => p.Person). HasForeignKey(d => d.PersonId).OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity(entity => { entity.ToTable("processors"); entity.HasIndex(e => e.AddrBus).HasDatabaseName("idx_processors_addr_bus"); entity.HasIndex(e => e.CompanyId).HasDatabaseName("idx_processors_company"); entity.HasIndex(e => e.Cores).HasDatabaseName("idx_processors_cores"); entity.HasIndex(e => e.DataBus).HasDatabaseName("idx_processors_data_bus"); entity.HasIndex(e => e.DieSize).HasDatabaseName("idx_processors_die_size"); entity.HasIndex(e => e.FprSize).HasDatabaseName("idx_processors_FPR_size"); entity.HasIndex(e => e.Fprs).HasDatabaseName("idx_processors_FPRs"); entity.HasIndex(e => e.GprSize).HasDatabaseName("idx_processors_GPR_size"); entity.HasIndex(e => e.Gprs).HasDatabaseName("idx_processors_GPRs"); entity.HasIndex(e => e.InstructionSetId).HasDatabaseName("idx_processors_instruction_set"); entity.HasIndex(e => e.Introduced).HasDatabaseName("idx_processors_introduced"); entity.HasIndex(e => e.L1Data).HasDatabaseName("idx_processors_L1_data"); entity.HasIndex(e => e.L1Instruction).HasDatabaseName("idx_processors_L1_instruction"); entity.HasIndex(e => e.L2).HasDatabaseName("idx_processors_L2"); entity.HasIndex(e => e.L3).HasDatabaseName("idx_processors_L3"); entity.HasIndex(e => e.ModelCode).HasDatabaseName("idx_processors_model_code"); entity.HasIndex(e => e.Name).HasDatabaseName("idx_processors_name"); entity.HasIndex(e => e.Package).HasDatabaseName("idx_processors_package"); entity.HasIndex(e => e.Process).HasDatabaseName("idx_processors_process"); entity.HasIndex(e => e.ProcessNm).HasDatabaseName("idx_processors_process_nm"); entity.HasIndex(e => e.SimdRegisters).HasDatabaseName("idx_processors_SIMD_registers"); entity.HasIndex(e => e.SimdSize).HasDatabaseName("idx_processors_SIMD_size"); entity.HasIndex(e => e.Speed).HasDatabaseName("idx_processors_speed"); entity.HasIndex(e => e.ThreadsPerCore).HasDatabaseName("idx_processors_threads_per_core"); entity.HasIndex(e => e.Transistors).HasDatabaseName("idx_processors_transistors"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.AddrBus).HasColumnName("addr_bus").HasColumnType("int(11)"); entity.Property(e => e.CompanyId).HasColumnName("company").HasColumnType("int(11)"); entity.Property(e => e.Cores).HasColumnName("cores").HasColumnType("int(11)"); entity.Property(e => e.DataBus).HasColumnName("data_bus").HasColumnType("int(11)"); entity.Property(e => e.DieSize).HasColumnName("die_size"); entity.Property(e => e.FprSize).HasColumnName("FPR_size").HasColumnType("int(11)"); entity.Property(e => e.Fprs).HasColumnName("FPRs").HasColumnType("int(11)"); entity.Property(e => e.GprSize).HasColumnName("GPR_size").HasColumnType("int(11)"); entity.Property(e => e.Gprs).HasColumnName("GPRs").HasColumnType("int(11)"); entity.Property(e => e.InstructionSetId).HasColumnName("instruction_set").HasColumnType("int(11)"); entity.Property(e => e.Introduced).HasColumnName("introduced").HasColumnType("datetime"); entity.Property(e => e.L1Data).HasColumnName("L1_data"); entity.Property(e => e.L1Instruction).HasColumnName("L1_instruction"); entity.Property(e => e.ModelCode).HasColumnName("model_code").HasColumnType("varchar(45)"); entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("char(50)"). HasDefaultValueSql("''"); entity.Property(e => e.Package).HasColumnName("package").HasColumnType("varchar(45)"); entity.Property(e => e.Process).HasColumnName("process").HasColumnType("varchar(45)"); entity.Property(e => e.ProcessNm).HasColumnName("process_nm"); entity.Property(e => e.SimdRegisters).HasColumnName("SIMD_registers").HasColumnType("int(11)"); entity.Property(e => e.SimdSize).HasColumnName("SIMD_size").HasColumnType("int(11)"); entity.Property(e => e.Speed).HasColumnName("speed"); entity.Property(e => e.ThreadsPerCore).HasColumnName("threads_per_core").HasColumnType("int(11)"); entity.Property(e => e.Transistors).HasColumnName("transistors").HasColumnType("bigint(20)"); entity.HasOne(d => d.Company).WithMany(p => p.Processors).HasForeignKey(d => d.CompanyId). HasConstraintName("fk_processors_company"); entity.HasOne(d => d.InstructionSet).WithMany(p => p.Processors).HasForeignKey(d => d.InstructionSetId). HasConstraintName("fk_processors_instruction_set"); }); modelBuilder.Entity(entity => { entity.ToTable("processors_by_machine"); entity.HasIndex(e => e.MachineId).HasDatabaseName("idx_processors_by_machine_machine"); entity.HasIndex(e => e.ProcessorId).HasDatabaseName("idx_processors_by_machine_processor"); entity.HasIndex(e => e.Speed).HasDatabaseName("idx_processors_by_machine_speed"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("bigint(20)"); entity.Property(e => e.MachineId).HasColumnName("machine").HasColumnType("int(11)"); entity.Property(e => e.ProcessorId).HasColumnName("processor").HasColumnType("int(11)"); entity.Property(e => e.Speed).HasColumnName("speed"); entity.HasOne(d => d.Machine).WithMany(p => p.Processors).HasForeignKey(d => d.MachineId). HasConstraintName("fk_processors_by_machine_machine"); entity.HasOne(d => d.Processor).WithMany(p => p.ProcessorsByMachine).HasForeignKey(d => d.ProcessorId). HasConstraintName("fk_processors_by_machine_processor"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.OwnedMachineId); entity.HasIndex(e => e.ProcessorId); entity.HasIndex(e => e.Speed); entity.HasOne(d => d.OwnedMachine).WithMany(p => p.Processors).HasForeignKey(d => d.OwnedMachineId); }); modelBuilder.Entity(entity => { entity.ToTable("resolutions"); entity.HasIndex(e => e.Colors).HasDatabaseName("idx_resolutions_colors"); entity.HasIndex(e => e.Height).HasDatabaseName("idx_resolutions_height"); entity.HasIndex(e => e.Palette).HasDatabaseName("idx_resolutions_palette"); entity.HasIndex(e => e.Width).HasDatabaseName("idx_resolutions_width"); entity.HasIndex(e => new { e.Width, e.Height }).HasDatabaseName("idx_resolutions_resolution"); entity.HasIndex(e => new { e.Width, e.Height, e.Colors }).HasDatabaseName("idx_resolutions_resolution_with_color"); entity.HasIndex(e => new { e.Width, e.Height, e.Colors, e.Palette }).HasDatabaseName("idx_resolutions_resolution_with_color_and_palette"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.Chars).HasColumnName("chars").HasColumnType("tinyint(1)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Colors).HasColumnName("colors").HasColumnType("bigint(20)"); entity.Property(e => e.Height).HasColumnName("height").HasColumnType("int(11)"). HasDefaultValueSql("'0'"); entity.Property(e => e.Palette).HasColumnName("palette").HasColumnType("bigint(20)"); entity.Property(e => e.Width).HasColumnName("width").HasColumnType("int(11)").HasDefaultValueSql("'0'"); }); modelBuilder.Entity(entity => { entity.ToTable("resolutions_by_gpu"); entity.HasIndex(e => e.GpuId).HasDatabaseName("idx_resolutions_by_gpu_gpu"); entity.HasIndex(e => e.ResolutionId).HasDatabaseName("idx_resolutions_by_gpu_resolution"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("bigint(20)"); entity.Property(e => e.GpuId).HasColumnName("gpu").HasColumnType("int(11)"); entity.Property(e => e.ResolutionId).HasColumnName("resolution").HasColumnType("int(11)"); entity.HasOne(d => d.Gpu).WithMany(p => p.ResolutionsByGpu).HasForeignKey(d => d.GpuId). HasConstraintName("fk_resolutions_by_gpu_gpu"); entity.HasOne(d => d.Resolution).WithMany(p => p.ResolutionsByGpu).HasForeignKey(d => d.ResolutionId). HasConstraintName("fk_resolutions_by_gpu_resolution"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.ScreenId); entity.HasIndex(e => e.ResolutionId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.ScreenId); entity.HasIndex(e => e.MachineId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Width); entity.HasIndex(e => e.Height); entity.HasIndex(e => e.Diagonal); entity.HasIndex(e => e.EffectiveColors); entity.HasIndex(e => e.Type); entity.HasOne(d => d.NativeResolution).WithMany(p => p.Screens); }); modelBuilder.Entity(entity => { entity.ToTable("sound_by_machine"); entity.HasIndex(e => e.MachineId).HasDatabaseName("idx_sound_by_machine_machine"); entity.HasIndex(e => e.SoundSynthId).HasDatabaseName("idx_sound_by_machine_sound_synth"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("bigint(20)"); entity.Property(e => e.MachineId).HasColumnName("machine").HasColumnType("int(11)"); entity.Property(e => e.SoundSynthId).HasColumnName("sound_synth").HasColumnType("int(11)"); entity.HasOne(d => d.Machine).WithMany(p => p.Sound).HasForeignKey(d => d.MachineId). HasConstraintName("fk_sound_by_machine_machine"); entity.HasOne(d => d.SoundSynth).WithMany(p => p.SoundByMachine).HasForeignKey(d => d.SoundSynthId). HasConstraintName("fk_sound_by_machine_sound_synth"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.OwnedMachineId); entity.HasIndex(e => e.SoundSynthId); entity.HasOne(d => d.OwnedMachine).WithMany(p => p.Sound).HasForeignKey(d => d.OwnedMachineId); }); modelBuilder.Entity(entity => { entity.ToTable("sound_synths"); entity.HasIndex(e => e.CompanyId).HasDatabaseName("idx_sound_synths_company"); entity.HasIndex(e => e.Depth).HasDatabaseName("idx_sound_synths_depth"); entity.HasIndex(e => e.Frequency).HasDatabaseName("idx_sound_synths_frequency"); entity.HasIndex(e => e.Introduced).HasDatabaseName("idx_sound_synths_introduced"); entity.HasIndex(e => e.ModelCode).HasDatabaseName("idx_sound_synths_model_code"); entity.HasIndex(e => e.Name).HasDatabaseName("idx_sound_synths_name"); entity.HasIndex(e => e.SquareWave).HasDatabaseName("idx_sound_synths_square_wave"); entity.HasIndex(e => e.Type).HasDatabaseName("idx_sound_synths_type"); entity.HasIndex(e => e.Voices).HasDatabaseName("idx_sound_synths_voices"); entity.HasIndex(e => e.WhiteNoise).HasDatabaseName("idx_sound_synths_white_noise"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("int(11)"); entity.Property(e => e.CompanyId).HasColumnName("company").HasColumnType("int(11)"); entity.Property(e => e.Depth).HasColumnName("depth").HasColumnType("int(11)"); entity.Property(e => e.Frequency).HasColumnName("frequency"); entity.Property(e => e.Introduced).HasColumnName("introduced").HasColumnType("datetime"); entity.Property(e => e.ModelCode).HasColumnName("model_code").HasColumnType("varchar(45)"); entity.Property(e => e.Name).IsRequired().HasColumnName("name").HasColumnType("char(50)"). HasDefaultValueSql("''"); entity.Property(e => e.SquareWave).HasColumnName("square_wave").HasColumnType("int(11)"); entity.Property(e => e.Type).HasColumnName("type").HasColumnType("int(11)"); entity.Property(e => e.Voices).HasColumnName("voices").HasColumnType("int(11)"); entity.Property(e => e.WhiteNoise).HasColumnName("white_noise").HasColumnType("int(11)"); entity.HasOne(d => d.Company).WithMany(p => p.SoundSynths).HasForeignKey(d => d.CompanyId). HasConstraintName("fk_sound_synths_company"); }); modelBuilder.Entity(entity => { entity.ToTable("storage_by_machine"); entity.HasIndex(e => e.Capacity).HasDatabaseName("idx_storage_capacity"); entity.HasIndex(e => e.Interface).HasDatabaseName("idx_storage_interface"); entity.HasIndex(e => e.MachineId).HasDatabaseName("idx_storage_machine"); entity.HasIndex(e => e.Type).HasDatabaseName("idx_storage_type"); entity.Property(e => e.Id).HasColumnName("id").HasColumnType("bigint(20)"); entity.Property(e => e.Capacity).HasColumnName("capacity").HasColumnType("bigint(20)"); entity.Property(e => e.Interface).HasColumnName("interface").HasColumnType("int(11)"). HasDefaultValueSql("'0'"); entity.Property(e => e.MachineId).HasColumnName("machine").HasColumnType("int(11)"); entity.Property(e => e.Type).HasColumnName("type").HasColumnType("int(11)").HasDefaultValueSql("'0'"); entity.HasOne(d => d.Machine).WithMany(p => p.Storage).HasForeignKey(d => d.MachineId). HasConstraintName("fk_storage_by_machine_machine"); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Capacity); entity.HasIndex(e => e.Interface); entity.HasIndex(e => e.OwnedMachineId); entity.HasIndex(e => e.Type); entity.HasOne(d => d.OwnedMachine).WithMany(p => p.Storage).HasForeignKey(d => d.OwnedMachineId); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Name); entity.HasIndex(e => e.SPDX); entity.HasIndex(e => e.FsfApproved); entity.HasIndex(e => e.OsiApproved); }); modelBuilder.Entity(entity => { entity.HasIndex(d => d.Table); entity.HasIndex(d => d.Type); }); modelBuilder.Entity(entity => { entity.HasIndex(d => d.Numeric); entity.HasIndex(d => d.Withdrawn); }); modelBuilder.Entity(entity => { entity.HasIndex(d => d.Year); }); modelBuilder.Entity(entity => { entity.HasIndex(d => d.Start); entity.HasIndex(d => d.End); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Manufacturer); entity.HasIndex(e => e.Model); entity.HasIndex(e => e.Revision); entity.HasIndex(e => e.Firmware); entity.HasIndex(e => e.Serial); entity.HasIndex(e => e.SoftwareName); entity.HasIndex(e => e.SoftwareVersion); entity.HasIndex(e => e.SoftwareOperatingSystem); entity.HasOne(e => e.Dump).WithMany(e => e.DumpHardware).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.Property(e => e.Md5).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter); entity.HasIndex(e => e.Size); entity.HasIndex(e => e.Md5); entity.HasIndex(e => e.Sha1); entity.HasIndex(e => e.Sha256); entity.HasIndex(e => e.Sha3); entity.HasIndex(e => e.Spamsum); entity.HasIndex(e => e.Mime); entity.HasIndex(e => e.Magic); entity.HasIndex(e => e.AccoustId); entity.HasIndex(e => e.Infected); entity.HasIndex(e => e.Malware); entity.HasIndex(e => e.Hack); entity.HasIndex(e => e.HackGroup); }); modelBuilder.Entity(entity => { entity.HasIndex(d => d.Name); entity.HasIndex(d => d.Size); }); modelBuilder.Entity(entity => { entity.HasIndex(d => d.Type); entity.HasIndex(d => d.CreationDate); entity.HasIndex(d => d.ModificationDate); entity.HasIndex(d => d.BackupDate); entity.HasIndex(d => d.Serial); entity.HasIndex(d => d.Label); entity.HasIndex(d => d.SystemIdentifier); entity.HasIndex(d => d.VolumeSetIdentifier); entity.HasIndex(d => d.PublisherIdentifier); entity.HasIndex(d => d.DataPreparerIdentifier); entity.HasIndex(d => d.ApplicationIdentifier); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Description); entity.HasIndex(e => e.Name); entity.HasIndex(e => e.Type); entity.HasIndex(e => e.Scheme); entity.HasIndex(e => e.FirstSector); entity.HasIndex(e => e.LastSector); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Partition).WithMany(p => p.Filesystems).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.Filesystem).WithMany(p => p.Partitions).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Title); entity.HasIndex(e => e.Type); entity.HasIndex(e => e.CopyProtection); entity.HasIndex(e => e.PartNumber); entity.HasIndex(e => e.SerialNumber); entity.HasIndex(e => e.Barcode); entity.HasIndex(e => e.CatalogueNumber); entity.HasIndex(e => e.Manufacturer); entity.HasIndex(e => e.Model); entity.HasIndex(e => e.Revision); entity.HasIndex(e => e.Firmware); entity.HasOne(d => d.MagazineIssue).WithMany(p => p.Coverdiscs).OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Partition).WithMany(p => p.Media).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.Media).WithMany(p => p.LogicalPartitions).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Media).WithMany(p => p.MediaDumps).OnDelete(DeleteBehavior.Cascade); entity.HasIndex(e => e.Status); entity.HasIndex(e => e.Format); }); modelBuilder.Entity(entity => { entity.Property(e => e.Md5).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter); entity.HasOne(d => d.MediaDump).WithMany(p => p.Files).OnDelete(DeleteBehavior.Cascade); entity.HasIndex(e => e.Size); entity.HasIndex(e => e.Md5); entity.HasIndex(e => e.Sha1); entity.HasIndex(e => e.Sha256); entity.HasIndex(e => e.Sha3); entity.HasIndex(e => e.Spamsum); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.MediaDumpFileImage).WithMany(p => p.Filesystems).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.Filesystem).WithMany(p => p.MediaDumpFileImages).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.Property(e => e.Md5).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter); entity.HasOne(d => d.MediaDump).WithOne(p => p.Image).OnDelete(DeleteBehavior.Cascade); entity.HasIndex(e => e.Size); entity.HasIndex(e => e.Md5); entity.HasIndex(e => e.Sha1); entity.HasIndex(e => e.Sha256); entity.HasIndex(e => e.Sha3); entity.HasIndex(e => e.Spamsum); entity.HasIndex(e => e.AccoustId); }); modelBuilder.Entity(entity => { entity.Property(e => e.Md5).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter); entity.HasOne(d => d.MediaDump).WithOne(p => p.Subchannel).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.Track).WithOne(p => p.Subchannel).OnDelete(DeleteBehavior.Cascade); entity.HasIndex(e => e.Size); entity.HasIndex(e => e.Md5); entity.HasIndex(e => e.Sha1); entity.HasIndex(e => e.Sha256); entity.HasIndex(e => e.Sha3); entity.HasIndex(e => e.Spamsum); }); modelBuilder.Entity(entity => { entity.Property(e => e.Md5).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha1).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha256).HasConversion(hexToBytesConverter); entity.Property(e => e.Sha3).HasConversion(hexToBytesConverter); entity.HasOne(d => d.MediaDump).WithMany(p => p.Tracks).OnDelete(DeleteBehavior.Cascade); entity.HasIndex(e => e.Size); entity.HasIndex(e => e.Format); entity.HasIndex(e => e.Md5); entity.HasIndex(e => e.Sha1); entity.HasIndex(e => e.Sha256); entity.HasIndex(e => e.Sha3); entity.HasIndex(e => e.Spamsum); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Path); entity.HasIndex(e => e.Name); entity.HasIndex(e => e.IsDirectory); entity.HasIndex(e => e.CreationDate); entity.HasIndex(e => e.AccessDate); entity.HasIndex(e => e.StatusChangeDate); entity.HasIndex(e => e.BackupDate); entity.HasIndex(e => e.LastWriteDate); entity.HasIndex(e => e.GroupId); entity.HasIndex(e => e.UserId); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.MediaFile).WithMany(p => p.DataStreams).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Filesystem).WithMany(p => p.Files).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Dumper); entity.HasIndex(e => e.DumpingGroup); entity.HasIndex(e => e.DumpDate); entity.HasOne(e => e.User).WithMany(e => e.Dumps).OnDelete(DeleteBehavior.SetNull); entity.HasOne(e => e.Media).WithMany(e => e.Dumps).OnDelete(DeleteBehavior.Cascade); entity.HasOne(e => e.MediaDump).WithMany(e => e.Dumps).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Name); entity.HasIndex(e => e.Introduced); entity.HasOne(e => e.Parent).WithMany(e => e.Children).OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity(entity => { entity.ToTable("CompaniesBySoftwareFamily"); entity.HasOne(d => d.Company).WithMany(p => p.SoftwareFamilies).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareFamily).WithMany(p => p.Companies).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Person).WithMany(p => p.SoftwareFamilies).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareFamily).WithMany(p => p.People).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.ToTable("SoftwareVersion"); entity.HasIndex(e => e.Name); entity.HasIndex(e => e.Introduced); entity.HasIndex(e => e.Codename); entity.HasIndex(e => e.Version); entity.HasOne(e => e.Family).WithMany(e => e.Versions).OnDelete(DeleteBehavior.Cascade); entity.HasOne(e => e.Previous).WithOne(e => e.Next).OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity(entity => { entity.ToTable("CompaniesBySoftwareVersion"); entity.HasOne(d => d.Company).WithMany(p => p.SoftwareVersions).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVersion).WithMany(p => p.Companies).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Person).WithMany(p => p.SoftwareVersions).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVersion).WithMany(p => p.People).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Introduced); entity.HasIndex(e => e.Name); entity.HasIndex(e => e.CatalogueNumber); entity.HasIndex(e => e.DistributionMode); entity.HasIndex(e => e.MinimumMemory); entity.HasIndex(e => e.PartNumber); entity.HasIndex(e => e.ProductCode); entity.HasIndex(e => e.RecommendedMemory); entity.HasIndex(e => e.RequiredStorage); entity.HasIndex(e => e.SerialNumber); entity.HasIndex(e => e.Version); entity.HasOne(e => e.Parent).WithMany(e => e.Derivates).OnDelete(DeleteBehavior.SetNull); entity.HasOne(e => e.SoftwareVersion).WithMany(e => e.Variants).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.ToTable("CompaniesBySoftwareVariant"); entity.HasOne(d => d.Company).WithMany(p => p.SoftwareVariants).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.Companies).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Minimum); entity.HasIndex(e => e.Recommended); entity.HasOne(d => d.Gpu).WithMany(p => p.Software).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.Gpus).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.InstructionSet).WithMany(p => p.Software).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.Architectures).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Language).WithMany(p => p.Software).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.Languages).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.MachineFamily).WithMany(p => p.Software).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.MachineFamilies).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Machine).WithMany(p => p.Software).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.Machines).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Media).WithMany(p => p.Software).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.Media).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.Person).WithMany(p => p.SoftwareVariants).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.People).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Minimum); entity.HasIndex(e => e.Recommended); entity.HasIndex(e => e.Speed); entity.HasOne(d => d.Processor).WithMany(p => p.Software).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.Processors).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.RequiredOperatingSystems). OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.RequiredSoftware). OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.SoundSynth).WithMany(p => p.Software).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.SupportedSound).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasOne(d => d.StandaloneFile).WithMany(p => p.DataStreams).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Path); entity.HasIndex(e => e.Name); entity.HasIndex(e => e.IsDirectory); entity.HasIndex(e => e.CreationDate); entity.HasIndex(e => e.AccessDate); entity.HasIndex(e => e.StatusChangeDate); entity.HasIndex(e => e.BackupDate); entity.HasIndex(e => e.LastWriteDate); entity.HasIndex(e => e.GroupId); entity.HasIndex(e => e.UserId); entity.HasOne(d => d.SoftwareVariant).WithMany(p => p.Files).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Type); entity.HasIndex(e => e.Text); entity.HasOne(d => d.Media).WithMany(p => p.MasteringTexts).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Type); entity.HasOne(e => e.MediaDump).WithMany(e => e.Tags).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Path); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Author); entity.HasIndex(e => e.ColorSpace); entity.HasIndex(e => e.Comments); entity.HasIndex(e => e.CreationDate); entity.HasIndex(e => e.ExifVersion); entity.HasIndex(e => e.HorizontalResolution); entity.HasIndex(e => e.ResolutionUnit); entity.HasIndex(e => e.ScannerManufacturer); entity.HasIndex(e => e.ScannerModel); entity.HasIndex(e => e.SoftwareUsed); entity.HasIndex(e => e.UploadDate); entity.HasIndex(e => e.VerticalResolution); entity.HasIndex(e => e.Type); entity.HasIndex(e => e.Page); entity.HasOne(d => d.Book).WithMany(p => p.Scans).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.User).WithMany(p => p.BookScans).OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Author); entity.HasIndex(e => e.ColorSpace); entity.HasIndex(e => e.Comments); entity.HasIndex(e => e.CreationDate); entity.HasIndex(e => e.ExifVersion); entity.HasIndex(e => e.HorizontalResolution); entity.HasIndex(e => e.ResolutionUnit); entity.HasIndex(e => e.ScannerManufacturer); entity.HasIndex(e => e.ScannerModel); entity.HasIndex(e => e.SoftwareUsed); entity.HasIndex(e => e.UploadDate); entity.HasIndex(e => e.VerticalResolution); entity.HasIndex(e => e.Type); entity.HasIndex(e => e.Page); entity.HasOne(d => d.Document).WithMany(p => p.Scans).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.User).WithMany(p => p.DocumentScans).OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity(entity => { entity.HasIndex(e => e.Author); entity.HasIndex(e => e.ColorSpace); entity.HasIndex(e => e.Comments); entity.HasIndex(e => e.CreationDate); entity.HasIndex(e => e.ExifVersion); entity.HasIndex(e => e.HorizontalResolution); entity.HasIndex(e => e.ResolutionUnit); entity.HasIndex(e => e.ScannerManufacturer); entity.HasIndex(e => e.ScannerModel); entity.HasIndex(e => e.SoftwareUsed); entity.HasIndex(e => e.UploadDate); entity.HasIndex(e => e.VerticalResolution); entity.HasIndex(e => e.Type); entity.HasIndex(e => e.Page); entity.HasOne(d => d.Magazine).WithMany(p => p.Scans).OnDelete(DeleteBehavior.Cascade); entity.HasOne(d => d.User).WithMany(p => p.MagazineScans).OnDelete(DeleteBehavior.SetNull); }); } } }