using System; using DiscImageChef.Server.Models; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; namespace DiscImageChef.Server.Migrations { public partial class InitialMigration : Migration { protected override void Up(MigrationBuilder migrationBuilder) { #region Check for old tables var AtasExists = DicServerContext.TableExists("Atas"); var BlockDescriptorsExists = DicServerContext.TableExists("BlockDescriptors"); var ChsExists = DicServerContext.TableExists("Chs"); var CommandsExists = DicServerContext.TableExists("Commands"); var CompactDiscOffsetsExists = DicServerContext.TableExists("CompactDiscOffsets"); var DensityCodesExists = DicServerContext.TableExists("DensityCodes"); var DevicesExists = DicServerContext.TableExists("Devices"); var DeviceStatsExists = DicServerContext.TableExists("DeviceStats"); var FilesystemsExists = DicServerContext.TableExists("Filesystems"); var FiltersExists = DicServerContext.TableExists("Filters"); var FireWiresExists = DicServerContext.TableExists("FireWires"); var MediaExists = DicServerContext.TableExists("Media"); var MediaFormatsExists = DicServerContext.TableExists("MediaFormats"); var MmcFeaturesExists = DicServerContext.TableExists("MmcFeatures"); var MmcsExists = DicServerContext.TableExists("Mmcs"); var MmcSdsExists = DicServerContext.TableExists("MmcSds"); var OperatingSystemsExists = DicServerContext.TableExists("OperatingSystems"); var PartitionsExists = DicServerContext.TableExists("Partitions"); var PcmciasExists = DicServerContext.TableExists("Pcmcias"); var ScsiModesExists = DicServerContext.TableExists("ScsiModes"); var ScsiPagesExists = DicServerContext.TableExists("ScsiPages"); var ScsisExists = DicServerContext.TableExists("Scsis"); var SscsExists = DicServerContext.TableExists("Sscs"); var SscSupportedMediasExists = DicServerContext.TableExists("SscSupportedMedias"); var SupportedDensitiesExists = DicServerContext.TableExists("SupportedDensities"); var TestedMediasExists = DicServerContext.TableExists("TestedMedias"); var TestedSequentialMediasExists = DicServerContext.TableExists("TestedSequentialMedias"); var UploadedReportsExists = DicServerContext.TableExists("UploadedReports"); var UsbProductsExists = DicServerContext.TableExists("UsbProducts"); var UsbsExists = DicServerContext.TableExists("Usbs"); var UsbVendorsExists = DicServerContext.TableExists("UsbVendors"); var VersionsExists = DicServerContext.TableExists("Versions"); var EFExists = DicServerContext.TableExists("__MigrationHistory"); #endregion #region Drop old restrictions if (AtasExists) migrationBuilder.DropForeignKey("FK_Atas_TestedMedias_ReadCapabilities_Id", "Atas"); if (BlockDescriptorsExists) migrationBuilder.DropForeignKey("FK_BlockDescriptors_ScsiModes_ScsiMode_Id", "BlockDescriptors"); if (DensityCodesExists) migrationBuilder.DropForeignKey( "FK_DensityCodes_SscSupportedMedias_SscSupportedMedia_Id", "DensityCodes"); if (DevicesExists) { migrationBuilder.DropForeignKey( "FK_Devices_Atas_ATA_Id", "Devices"); migrationBuilder.DropForeignKey( "FK_Devices_Atas_ATAPI_Id", "Devices"); migrationBuilder.DropForeignKey( "FK_Devices_CompactDiscOffsets_CdOffset_Id", "Devices"); migrationBuilder.DropForeignKey( "FK_Devices_FireWires_FireWire_Id", "Devices"); migrationBuilder.DropForeignKey( "FK_Devices_MmcSds_MultiMediaCard_Id", "Devices"); migrationBuilder.DropForeignKey( "FK_Devices_MmcSds_SecureDigital_Id", "Devices"); migrationBuilder.DropForeignKey( "FK_Devices_Pcmcias_PCMCIA_Id", "Devices"); migrationBuilder.DropForeignKey( "FK_Devices_Scsis_SCSI_Id", "Devices"); migrationBuilder.DropForeignKey( "FK_Devices_Usbs_USB_Id", "Devices"); } if (DeviceStatsExists) migrationBuilder.DropForeignKey( "FK_DeviceStats_Devices_Report_Id", "DeviceStats"); if (MmcsExists) migrationBuilder.DropForeignKey( "FK_Mmcs_MmcFeatures_Features_Id", "Mmcs"); if (ScsiPagesExists) { migrationBuilder.DropForeignKey( "FK_ScsiPages_ScsiModes_ScsiMode_Id", "ScsiPages"); migrationBuilder.DropForeignKey( "FK_ScsiPages_Scsis_Scsi_Id", "ScsiPages"); } if (ScsisExists) { migrationBuilder.DropForeignKey( "FK_Scsis_Mmcs_MultiMediaDevice_Id", "Scsis"); migrationBuilder.DropForeignKey( "FK_Scsis_ScsiModes_ModeSense_Id", "Scsis"); migrationBuilder.DropForeignKey( "FK_Scsis_Sscs_SequentialDevice_Id", "Scsis"); migrationBuilder.DropForeignKey( "FK_Scsis_TestedMedias_ReadCapabilities_Id", "Scsis"); } if (SscSupportedMediasExists) { migrationBuilder.DropForeignKey( "FK_a812ec60296b45bcb3d245a5c6d01d73", "SscSupportedMedias"); migrationBuilder.DropForeignKey( "FK_SscSupportedMedias_Sscs_Ssc_Id", "SscSupportedMedias"); } if (SupportedDensitiesExists) { migrationBuilder.DropForeignKey( "FK_783f1b3552774280af1caf44fb27e285", "SupportedDensities"); migrationBuilder.DropForeignKey( "FK_SupportedDensities_Sscs_Ssc_Id", "SupportedDensities"); } if (TestedMediasExists) { migrationBuilder.DropForeignKey( "FK_TestedMedias_Atas_Ata_Id", "TestedMedias"); migrationBuilder.DropForeignKey( "FK_TestedMedias_Chs_CHS_Id", "TestedMedias"); migrationBuilder.DropForeignKey( "FK_TestedMedias_Chs_CurrentCHS_Id", "TestedMedias"); migrationBuilder.DropForeignKey( "FK_TestedMedias_Mmcs_Mmc_Id", "TestedMedias"); migrationBuilder.DropForeignKey( "FK_TestedMedias_Scsis_Scsi_Id", "TestedMedias"); } if (TestedSequentialMediasExists) migrationBuilder.DropForeignKey( "FK_TestedSequentialMedias_Sscs_Ssc_Id", "TestedSequentialMedias"); if (UploadedReportsExists) { migrationBuilder.DropForeignKey( "FK_UploadedReports_Atas_ATA_Id", "UploadedReports"); migrationBuilder.DropForeignKey( "FK_UploadedReports_Atas_ATAPI_Id", "UploadedReports"); migrationBuilder.DropForeignKey( "FK_UploadedReports_FireWires_FireWire_Id", "UploadedReports"); migrationBuilder.DropForeignKey( "FK_UploadedReports_MmcSds_MultiMediaCard_Id", "UploadedReports"); migrationBuilder.DropForeignKey( "FK_UploadedReports_MmcSds_SecureDigital_Id", "UploadedReports"); migrationBuilder.DropForeignKey( "FK_UploadedReports_Pcmcias_PCMCIA_Id", "UploadedReports"); migrationBuilder.DropForeignKey( "FK_UploadedReports_Scsis_SCSI_Id", "UploadedReports"); migrationBuilder.DropForeignKey( "FK_UploadedReports_Usbs_USB_Id", "UploadedReports"); } if (UsbProductsExists) migrationBuilder.DropForeignKey( "FK_UsbProducts_UsbVendors_VendorId", "UsbProducts"); #endregion #region TABLE: CdOffsets migrationBuilder.CreateTable( "CdOffsets", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Manufacturer = table.Column(nullable: true), Model = table.Column(nullable: true), Offset = table.Column(), Submissions = table.Column(), Agreement = table.Column(), AddedWhen = table.Column(), ModifiedWhen = table.Column() }, constraints: table => { table.PrimaryKey("PK_CdOffsets", x => x.Id); }); if (CompactDiscOffsetsExists) { migrationBuilder.Sql( "INSERT INTO CdOffsets (Id, Manufacturer, Model, Offset, Submissions, Agreement, AddedWhen, ModifiedWhen) SELECT Id, Manufacturer, Model, Offset, Submissions, Agreement, AddedWhen, ModifiedWhen FROM CompactDiscOffsets"); migrationBuilder.DropTable("CompactDiscOffsets"); } #endregion #region TABLE: Chs if (ChsExists) migrationBuilder.RenameTable("Chs", newName: "Chs_old"); migrationBuilder.CreateTable( "Chs", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Cylinders = table.Column(), Heads = table.Column(), Sectors = table.Column(), CylindersSql = table.Column(), HeadsSql = table.Column(), SectorsSql = table.Column() }, constraints: table => { table.PrimaryKey("PK_Chs", x => x.Id); }); if (ChsExists) { migrationBuilder.Sql( "INSERT INTO Chs (Id, Cylinders, Heads, Sectors, CylindersSql, HeadsSql, SectorsSql) SELECT Id, CylindersSql AS Cylinders, HeadsSql AS Heads, SectorsSql AS Sectors, CylindersSql, HeadsSql, SectorsSql FROM Chs_old"); migrationBuilder.DropTable("Chs_old"); } #endregion #region TABLE: Commands if (CommandsExists) migrationBuilder.RenameTable("Commands", newName: "Commands_old"); migrationBuilder.CreateTable( "Commands", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), Count = table.Column() }, constraints: table => { table.PrimaryKey("PK_Commands", x => x.Id); }); if (CommandsExists) { migrationBuilder.Sql( "INSERT INTO Commands (Id, Name, Count) SELECT Id, Name, Count FROM Commands_old"); migrationBuilder.DropTable("Commands_old"); } #endregion #region TABLE: Filesystems if (FilesystemsExists) migrationBuilder.RenameTable("Filesystems", newName: "Filesystems_old"); migrationBuilder.CreateTable( "Filesystems", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), Count = table.Column() }, constraints: table => { table.PrimaryKey("PK_Filesystems", x => x.Id); }); if (FilesystemsExists) { migrationBuilder.Sql( "INSERT INTO Filesystems (Id, Name, Count) SELECT Id, Name, Count FROM Filesystems_old"); migrationBuilder.DropTable("Filesystems_old"); } #endregion #region TABLE: Filters if (FiltersExists) migrationBuilder.RenameTable("Filters", newName: "Filters_old"); migrationBuilder.CreateTable( "Filters", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), Count = table.Column() }, constraints: table => { table.PrimaryKey("PK_Filters", x => x.Id); }); if (FiltersExists) { migrationBuilder.Sql( "INSERT INTO Filters (Id, Name, Count) SELECT Id, Name, Count FROM Filters_old"); migrationBuilder.DropTable("Filters_old"); } #endregion #region TABLE: FireWire migrationBuilder.CreateTable( "FireWire", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), VendorID = table.Column(), ProductID = table.Column(), Manufacturer = table.Column(nullable: true), Product = table.Column(nullable: true), RemovableMedia = table.Column(), VendorIDSql = table.Column(), ProductIDSql = table.Column() }, constraints: table => { table.PrimaryKey("PK_FireWire", x => x.Id); }); if (FireWiresExists) { migrationBuilder.Sql( "INSERT INTO FireWire (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, VendorIDSql, ProductIDSql) SELECT Id, VendorIDSql AS VendorID, ProductIDSql AS ProductID, Manufacturer, Product, RemovableMedia, VendorIDSql, ProductIDSql FROM FireWires"); migrationBuilder.DropTable("FireWires"); } #endregion #region TABLE: MediaFormats if (MediaFormatsExists) migrationBuilder.RenameTable("MediaFormats", newName: "MediaFormats_old"); migrationBuilder.CreateTable( "MediaFormats", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), Count = table.Column() }, constraints: table => { table.PrimaryKey("PK_MediaFormats", x => x.Id); }); if (MediaFormatsExists) { migrationBuilder.Sql( "INSERT INTO MediaFormats (Id, Name, Count) SELECT Id, Name, Count FROM MediaFormats_old"); migrationBuilder.DropTable("MediaFormats_old"); } #endregion #region TABLE: Medias migrationBuilder.CreateTable( "Medias", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Type = table.Column(nullable: true), Real = table.Column(), Count = table.Column() }, constraints: table => { table.PrimaryKey("PK_Medias", x => x.Id); }); if (MediaExists) { migrationBuilder.Sql( "INSERT INTO Medias (`Id`, `Type`, `Real`, `Count`) SELECT `Id`, `Type`, `Real`, `Count` FROM Media"); migrationBuilder.DropTable("Media"); } #endregion #region TABLE: MmcFeatures if (MmcFeaturesExists) migrationBuilder.RenameTable("MmcFeatures", newName: "MmcFeatures_old"); migrationBuilder.CreateTable( "MmcFeatures", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), AACSVersion = table.Column(nullable: true), AGIDs = table.Column(nullable: true), BindingNonceBlocks = table.Column(nullable: true), BlocksPerReadableUnit = table.Column(nullable: true), BufferUnderrunFreeInDVD = table.Column(), BufferUnderrunFreeInSAO = table.Column(), BufferUnderrunFreeInTAO = table.Column(), CanAudioScan = table.Column(), CanEject = table.Column(), CanEraseSector = table.Column(), CanExpandBDRESpareArea = table.Column(), CanFormat = table.Column(), CanFormatBDREWithoutSpare = table.Column(), CanFormatCert = table.Column(), CanFormatFRF = table.Column(), CanFormatQCert = table.Column(), CanFormatRRM = table.Column(), CanGenerateBindingNonce = table.Column(), CanLoad = table.Column(), CanMuteSeparateChannels = table.Column(), CanOverwriteSAOTrack = table.Column(), CanOverwriteTAOTrack = table.Column(), CanPlayCDAudio = table.Column(), CanPseudoOverwriteBDR = table.Column(), CanReadAllDualR = table.Column(), CanReadAllDualRW = table.Column(), CanReadBD = table.Column(), CanReadBDR = table.Column(), CanReadBDRE1 = table.Column(), CanReadBDRE2 = table.Column(), CanReadBDROM = table.Column(), CanReadBluBCA = table.Column(), CanReadCD = table.Column(), CanReadCDMRW = table.Column(), CanReadCPRM_MKB = table.Column(), CanReadDDCD = table.Column(), CanReadDVD = table.Column(), CanReadDVDPlusMRW = table.Column(), CanReadDVDPlusR = table.Column(), CanReadDVDPlusRDL = table.Column(), CanReadDVDPlusRW = table.Column(), CanReadDVDPlusRWDL = table.Column(), CanReadDriveAACSCertificate = table.Column(), CanReadHDDVD = table.Column(), CanReadHDDVDR = table.Column(), CanReadHDDVDRAM = table.Column(), CanReadLeadInCDText = table.Column(), CanReadOldBDR = table.Column(), CanReadOldBDRE = table.Column(), CanReadOldBDROM = table.Column(), CanReadSpareAreaInformation = table.Column(), CanReportDriveSerial = table.Column(), CanReportMediaSerial = table.Column(), CanTestWriteDDCDR = table.Column(), CanTestWriteDVD = table.Column(), CanTestWriteInSAO = table.Column(), CanTestWriteInTAO = table.Column(), CanUpgradeFirmware = table.Column(), CanWriteBD = table.Column(), CanWriteBDR = table.Column(), CanWriteBDRE1 = table.Column(), CanWriteBDRE2 = table.Column(), CanWriteBusEncryptedBlocks = table.Column(), CanWriteCDMRW = table.Column(), CanWriteCDRW = table.Column(), CanWriteCDRWCAV = table.Column(), CanWriteCDSAO = table.Column(), CanWriteCDTAO = table.Column(), CanWriteCSSManagedDVD = table.Column(), CanWriteDDCDR = table.Column(), CanWriteDDCDRW = table.Column(), CanWriteDVDPlusMRW = table.Column(), CanWriteDVDPlusR = table.Column(), CanWriteDVDPlusRDL = table.Column(), CanWriteDVDPlusRW = table.Column(), CanWriteDVDPlusRWDL = table.Column(), CanWriteDVDR = table.Column(), CanWriteDVDRDL = table.Column(), CanWriteDVDRW = table.Column(), CanWriteHDDVDR = table.Column(), CanWriteHDDVDRAM = table.Column(), CanWriteOldBDR = table.Column(), CanWriteOldBDRE = table.Column(), CanWritePackedSubchannelInTAO = table.Column(), CanWriteRWSubchannelInSAO = table.Column(), CanWriteRWSubchannelInTAO = table.Column(), CanWriteRaw = table.Column(), CanWriteRawMultiSession = table.Column(), CanWriteRawSubchannelInTAO = table.Column(), ChangerIsSideChangeCapable = table.Column(), ChangerSlots = table.Column(), ChangerSupportsDiscPresent = table.Column(), CPRMVersion = table.Column(nullable: true), CSSVersion = table.Column(nullable: true), DBML = table.Column(), DVDMultiRead = table.Column(), EmbeddedChanger = table.Column(), ErrorRecoveryPage = table.Column(), FirmwareDate = table.Column(nullable: true), LoadingMechanismType = table.Column(nullable: true), Locked = table.Column(), LogicalBlockSize = table.Column(nullable: true), MultiRead = table.Column(), PhysicalInterfaceStandardNumber = table.Column(nullable: true), PreventJumper = table.Column(), SupportsAACS = table.Column(), SupportsBusEncryption = table.Column(), SupportsC2 = table.Column(), SupportsCPRM = table.Column(), SupportsCSS = table.Column(), SupportsDAP = table.Column(), SupportsDeviceBusyEvent = table.Column(), SupportsHybridDiscs = table.Column(), SupportsModePage1Ch = table.Column(), SupportsOSSC = table.Column(), SupportsPWP = table.Column(), SupportsSWPP = table.Column(), SupportsSecurDisc = table.Column(), SupportsSeparateVolume = table.Column(), SupportsVCPS = table.Column(), SupportsWriteInhibitDCB = table.Column(), SupportsWriteProtectPAC = table.Column(), VolumeLevels = table.Column(nullable: true), BinaryData = table.Column(nullable: true), BlocksPerReadableUnitSql = table.Column(nullable: true), LogicalBlockSizeSql = table.Column(nullable: true), PhysicalInterfaceStandardNumberSql = table.Column(nullable: true), VolumeLevelsSql = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_MmcFeatures", x => x.Id); }); if (MmcFeaturesExists) { migrationBuilder.Sql(@"INSERT INTO MmcFeatures (AACSVersion, AGIDs, BindingNonceBlocks, BlocksPerReadableUnit, BufferUnderrunFreeInDVD, BufferUnderrunFreeInSAO, BufferUnderrunFreeInTAO, CanAudioScan, CanEject, CanEraseSector, CanExpandBDRESpareArea, CanFormat, CanFormatBDREWithoutSpare, CanFormatCert, CanFormatFRF, CanFormatQCert, CanFormatRRM, CanGenerateBindingNonce, CanLoad, CanMuteSeparateChannels, CanOverwriteSAOTrack, CanOverwriteTAOTrack, CanPlayCDAudio, CanPseudoOverwriteBDR, CanReadAllDualR, CanReadAllDualRW, CanReadBD, CanReadBDR, CanReadBDRE1, CanReadBDRE2, CanReadBDROM, CanReadBluBCA, CanReadCD, CanReadCDMRW, CanReadCPRM_MKB, CanReadDDCD, CanReadDVD, CanReadDVDPlusMRW, CanReadDVDPlusR, CanReadDVDPlusRDL, CanReadDVDPlusRW, CanReadDVDPlusRWDL, CanReadDriveAACSCertificate, CanReadHDDVD, CanReadHDDVDR, CanReadHDDVDRAM, CanReadLeadInCDText, CanReadOldBDR, CanReadOldBDRE, CanReadOldBDROM, CanReadSpareAreaInformation, CanReportDriveSerial, CanReportMediaSerial, CanTestWriteDDCDR, CanTestWriteDVD, CanTestWriteInSAO, CanTestWriteInTAO, CanUpgradeFirmware, CanWriteBD, CanWriteBDR, CanWriteBDRE1, CanWriteBDRE2, CanWriteBusEncryptedBlocks, CanWriteCDMRW, CanWriteCDRW, CanWriteCDRWCAV, CanWriteCDSAO, CanWriteCDTAO, CanWriteCSSManagedDVD, CanWriteDDCDR, CanWriteDDCDRW, CanWriteDVDPlusMRW, CanWriteDVDPlusR, CanWriteDVDPlusRDL, CanWriteDVDPlusRW, CanWriteDVDPlusRWDL, CanWriteDVDR, CanWriteDVDRDL, CanWriteDVDRW, CanWriteHDDVDR, CanWriteHDDVDRAM, CanWriteOldBDR, CanWriteOldBDRE, CanWritePackedSubchannelInTAO, CanWriteRWSubchannelInSAO, CanWriteRWSubchannelInTAO, CanWriteRaw, CanWriteRawMultiSession, CanWriteRawSubchannelInTAO, ChangerIsSideChangeCapable, ChangerSlots, ChangerSupportsDiscPresent, CPRMVersion, CSSVersion, DBML, DVDMultiRead, EmbeddedChanger, ErrorRecoveryPage, FirmwareDate, LoadingMechanismType, Locked, LogicalBlockSize, MultiRead, PhysicalInterfaceStandardNumber, PreventJumper, SupportsAACS, SupportsBusEncryption, SupportsC2, SupportsCPRM, SupportsCSS, SupportsDAP, SupportsDeviceBusyEvent, SupportsHybridDiscs, SupportsModePage1Ch, SupportsOSSC, SupportsPWP, SupportsSWPP, SupportsSecurDisc, SupportsSeparateVolume, SupportsVCPS, SupportsWriteInhibitDCB, SupportsWriteProtectPAC, VolumeLevels, BinaryData, BlocksPerReadableUnitSql, LogicalBlockSizeSql, PhysicalInterfaceStandardNumberSql, VolumeLevelsSql) SELECT AACSVersion, AGIDs, BindingNonceBlocks, BlocksPerReadableUnitSql AS BlocksPerReadableUnit, BufferUnderrunFreeInDVD, BufferUnderrunFreeInSAO, BufferUnderrunFreeInTAO, CanAudioScan, CanEject, CanEraseSector, CanExpandBDRESpareArea, CanFormat, CanFormatBDREWithoutSpare, CanFormatCert, CanFormatFRF, CanFormatQCert, CanFormatRRM, CanGenerateBindingNonce, CanLoad, CanMuteSeparateChannels, CanOverwriteSAOTrack, CanOverwriteTAOTrack, CanPlayCDAudio, CanPseudoOverwriteBDR, CanReadAllDualR, CanReadAllDualRW, CanReadBD, CanReadBDR, CanReadBDRE1, CanReadBDRE2, CanReadBDROM, CanReadBluBCA, CanReadCD, CanReadCDMRW, CanReadCPRM_MKB, CanReadDDCD, CanReadDVD, CanReadDVDPlusMRW, CanReadDVDPlusR, CanReadDVDPlusRDL, CanReadDVDPlusRW, CanReadDVDPlusRWDL, CanReadDriveAACSCertificate, CanReadHDDVD, CanReadHDDVDR, CanReadHDDVDRAM, CanReadLeadInCDText, CanReadOldBDR, CanReadOldBDRE, CanReadOldBDROM, CanReadSpareAreaInformation, CanReportDriveSerial, CanReportMediaSerial, CanTestWriteDDCDR, CanTestWriteDVD, CanTestWriteInSAO, CanTestWriteInTAO, CanUpgradeFirmware, CanWriteBD, CanWriteBDR, CanWriteBDRE1, CanWriteBDRE2, CanWriteBusEncryptedBlocks, CanWriteCDMRW, CanWriteCDRW, CanWriteCDRWCAV, CanWriteCDSAO, CanWriteCDTAO, CanWriteCSSManagedDVD, CanWriteDDCDR, CanWriteDDCDRW, CanWriteDVDPlusMRW, CanWriteDVDPlusR, CanWriteDVDPlusRDL, CanWriteDVDPlusRW, CanWriteDVDPlusRWDL, CanWriteDVDR, CanWriteDVDRDL, CanWriteDVDRW, CanWriteHDDVDR, CanWriteHDDVDRAM, CanWriteOldBDR, CanWriteOldBDRE, CanWritePackedSubchannelInTAO, CanWriteRWSubchannelInSAO, CanWriteRWSubchannelInTAO, CanWriteRaw, CanWriteRawMultiSession, CanWriteRawSubchannelInTAO, ChangerIsSideChangeCapable, ChangerSlots, ChangerSupportsDiscPresent, CPRMVersion, CSSVersion, DBML, DVDMultiRead, EmbeddedChanger, ErrorRecoveryPage, FirmwareDate, LoadingMechanismType, Locked, LogicalBlockSizeSql AS LogicalBlockSize, MultiRead, PhysicalInterfaceStandardNumberSql AS PhysicalInterfaceStandardNumber, PreventJumper, SupportsAACS, SupportsBusEncryption, SupportsC2, SupportsCPRM, SupportsCSS, SupportsDAP, SupportsDeviceBusyEvent, SupportsHybridDiscs, SupportsModePage1Ch, SupportsOSSC, SupportsPWP, SupportsSWPP, SupportsSecurDisc, SupportsSeparateVolume, SupportsVCPS, SupportsWriteInhibitDCB, SupportsWriteProtectPAC, VolumeLevelsSql AS VolumeLevels, BinaryData, BlocksPerReadableUnitSql, LogicalBlockSizeSql, PhysicalInterfaceStandardNumberSql, VolumeLevelsSql FROM MmcFeatures_old WHERE VolumeLevelsSql >= 0 OR VolumeLevelsSql IS NULL"); migrationBuilder.Sql(@"INSERT INTO MmcFeatures (AACSVersion, AGIDs, BindingNonceBlocks, BlocksPerReadableUnit, BufferUnderrunFreeInDVD, BufferUnderrunFreeInSAO, BufferUnderrunFreeInTAO, CanAudioScan, CanEject, CanEraseSector, CanExpandBDRESpareArea, CanFormat, CanFormatBDREWithoutSpare, CanFormatCert, CanFormatFRF, CanFormatQCert, CanFormatRRM, CanGenerateBindingNonce, CanLoad, CanMuteSeparateChannels, CanOverwriteSAOTrack, CanOverwriteTAOTrack, CanPlayCDAudio, CanPseudoOverwriteBDR, CanReadAllDualR, CanReadAllDualRW, CanReadBD, CanReadBDR, CanReadBDRE1, CanReadBDRE2, CanReadBDROM, CanReadBluBCA, CanReadCD, CanReadCDMRW, CanReadCPRM_MKB, CanReadDDCD, CanReadDVD, CanReadDVDPlusMRW, CanReadDVDPlusR, CanReadDVDPlusRDL, CanReadDVDPlusRW, CanReadDVDPlusRWDL, CanReadDriveAACSCertificate, CanReadHDDVD, CanReadHDDVDR, CanReadHDDVDRAM, CanReadLeadInCDText, CanReadOldBDR, CanReadOldBDRE, CanReadOldBDROM, CanReadSpareAreaInformation, CanReportDriveSerial, CanReportMediaSerial, CanTestWriteDDCDR, CanTestWriteDVD, CanTestWriteInSAO, CanTestWriteInTAO, CanUpgradeFirmware, CanWriteBD, CanWriteBDR, CanWriteBDRE1, CanWriteBDRE2, CanWriteBusEncryptedBlocks, CanWriteCDMRW, CanWriteCDRW, CanWriteCDRWCAV, CanWriteCDSAO, CanWriteCDTAO, CanWriteCSSManagedDVD, CanWriteDDCDR, CanWriteDDCDRW, CanWriteDVDPlusMRW, CanWriteDVDPlusR, CanWriteDVDPlusRDL, CanWriteDVDPlusRW, CanWriteDVDPlusRWDL, CanWriteDVDR, CanWriteDVDRDL, CanWriteDVDRW, CanWriteHDDVDR, CanWriteHDDVDRAM, CanWriteOldBDR, CanWriteOldBDRE, CanWritePackedSubchannelInTAO, CanWriteRWSubchannelInSAO, CanWriteRWSubchannelInTAO, CanWriteRaw, CanWriteRawMultiSession, CanWriteRawSubchannelInTAO, ChangerIsSideChangeCapable, ChangerSlots, ChangerSupportsDiscPresent, CPRMVersion, CSSVersion, DBML, DVDMultiRead, EmbeddedChanger, ErrorRecoveryPage, FirmwareDate, LoadingMechanismType, Locked, LogicalBlockSize, MultiRead, PhysicalInterfaceStandardNumber, PreventJumper, SupportsAACS, SupportsBusEncryption, SupportsC2, SupportsCPRM, SupportsCSS, SupportsDAP, SupportsDeviceBusyEvent, SupportsHybridDiscs, SupportsModePage1Ch, SupportsOSSC, SupportsPWP, SupportsSWPP, SupportsSecurDisc, SupportsSeparateVolume, SupportsVCPS, SupportsWriteInhibitDCB, SupportsWriteProtectPAC, VolumeLevels, BinaryData, BlocksPerReadableUnitSql, LogicalBlockSizeSql, PhysicalInterfaceStandardNumberSql, VolumeLevelsSql) SELECT AACSVersion, AGIDs, BindingNonceBlocks, BlocksPerReadableUnitSql AS BlocksPerReadableUnit, BufferUnderrunFreeInDVD, BufferUnderrunFreeInSAO, BufferUnderrunFreeInTAO, CanAudioScan, CanEject, CanEraseSector, CanExpandBDRESpareArea, CanFormat, CanFormatBDREWithoutSpare, CanFormatCert, CanFormatFRF, CanFormatQCert, CanFormatRRM, CanGenerateBindingNonce, CanLoad, CanMuteSeparateChannels, CanOverwriteSAOTrack, CanOverwriteTAOTrack, CanPlayCDAudio, CanPseudoOverwriteBDR, CanReadAllDualR, CanReadAllDualRW, CanReadBD, CanReadBDR, CanReadBDRE1, CanReadBDRE2, CanReadBDROM, CanReadBluBCA, CanReadCD, CanReadCDMRW, CanReadCPRM_MKB, CanReadDDCD, CanReadDVD, CanReadDVDPlusMRW, CanReadDVDPlusR, CanReadDVDPlusRDL, CanReadDVDPlusRW, CanReadDVDPlusRWDL, CanReadDriveAACSCertificate, CanReadHDDVD, CanReadHDDVDR, CanReadHDDVDRAM, CanReadLeadInCDText, CanReadOldBDR, CanReadOldBDRE, CanReadOldBDROM, CanReadSpareAreaInformation, CanReportDriveSerial, CanReportMediaSerial, CanTestWriteDDCDR, CanTestWriteDVD, CanTestWriteInSAO, CanTestWriteInTAO, CanUpgradeFirmware, CanWriteBD, CanWriteBDR, CanWriteBDRE1, CanWriteBDRE2, CanWriteBusEncryptedBlocks, CanWriteCDMRW, CanWriteCDRW, CanWriteCDRWCAV, CanWriteCDSAO, CanWriteCDTAO, CanWriteCSSManagedDVD, CanWriteDDCDR, CanWriteDDCDRW, CanWriteDVDPlusMRW, CanWriteDVDPlusR, CanWriteDVDPlusRDL, CanWriteDVDPlusRW, CanWriteDVDPlusRWDL, CanWriteDVDR, CanWriteDVDRDL, CanWriteDVDRW, CanWriteHDDVDR, CanWriteHDDVDRAM, CanWriteOldBDR, CanWriteOldBDRE, CanWritePackedSubchannelInTAO, CanWriteRWSubchannelInSAO, CanWriteRWSubchannelInTAO, CanWriteRaw, CanWriteRawMultiSession, CanWriteRawSubchannelInTAO, ChangerIsSideChangeCapable, ChangerSlots, ChangerSupportsDiscPresent, CPRMVersion, CSSVersion, DBML, DVDMultiRead, EmbeddedChanger, ErrorRecoveryPage, FirmwareDate, LoadingMechanismType, Locked, LogicalBlockSizeSql AS LogicalBlockSize, MultiRead, PhysicalInterfaceStandardNumberSql AS PhysicalInterfaceStandardNumber, PreventJumper, SupportsAACS, SupportsBusEncryption, SupportsC2, SupportsCPRM, SupportsCSS, SupportsDAP, SupportsDeviceBusyEvent, SupportsHybridDiscs, SupportsModePage1Ch, SupportsOSSC, SupportsPWP, SupportsSWPP, SupportsSecurDisc, SupportsSeparateVolume, SupportsVCPS, SupportsWriteInhibitDCB, SupportsWriteProtectPAC, (65536+VolumeLevelsSql) AS VolumeLevels, BinaryData, BlocksPerReadableUnitSql, LogicalBlockSizeSql, PhysicalInterfaceStandardNumberSql, VolumeLevelsSql FROM MmcFeatures_old WHERE VolumeLevelsSql < 0"); migrationBuilder.DropTable("MmcFeatures_old"); } #endregion #region TABLE: MmcSd migrationBuilder.CreateTable( "MmcSd", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), CID = table.Column(nullable: true), CSD = table.Column(nullable: true), OCR = table.Column(nullable: true), SCR = table.Column(nullable: true), ExtendedCSD = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_MmcSd", x => x.Id); }); if (MmcSdsExists) { migrationBuilder.Sql( "INSERT INTO MmcSd (Id, CID, CSD, OCR, SCR, ExtendedCSD) SELECT Id, CID, CSD, OCR, SCR, ExtendedCSD FROM MmcSds"); migrationBuilder.DropTable("MmcSds"); } #endregion #region TABLE: OperatingSystems if (OperatingSystemsExists) migrationBuilder.RenameTable("OperatingSystems", newName: "OperatingSystems_old"); migrationBuilder.CreateTable( "OperatingSystems", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), Version = table.Column(nullable: true), Count = table.Column() }, constraints: table => { table.PrimaryKey("PK_OperatingSystems", x => x.Id); }); if (OperatingSystemsExists) { migrationBuilder.Sql( "INSERT INTO OperatingSystems (Id, Name, Version, Count) SELECT Id, Name, Version, Count FROM OperatingSystems_old"); migrationBuilder.DropTable("OperatingSystems_old"); } #endregion #region TABLE: Partitions if (PartitionsExists) migrationBuilder.RenameTable("Partitions", newName: "Partitions_old"); migrationBuilder.CreateTable( "Partitions", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Name = table.Column(nullable: true), Count = table.Column() }, constraints: table => { table.PrimaryKey("PK_Partitions", x => x.Id); }); if (PartitionsExists) { migrationBuilder.Sql( "INSERT INTO Partitions (Id, Name, Count) SELECT Id, Name, Count FROM Partitions_old"); migrationBuilder.DropTable("Partitions_old"); } #endregion #region TABLE: Pcmcia migrationBuilder.CreateTable( "Pcmcia", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), CIS = table.Column(nullable: true), Compliance = table.Column(nullable: true), ManufacturerCode = table.Column(nullable: true), CardCode = table.Column(nullable: true), Manufacturer = table.Column(nullable: true), ProductName = table.Column(nullable: true), ManufacturerCodeSql = table.Column(nullable: true), CardCodeSql = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Pcmcia", x => x.Id); }); if (PcmciasExists) { migrationBuilder.Sql( "INSERT INTO Pcmcia (Id, CIS, Compliance, ManufacturerCode, CardCode, Manufacturer, ProductName, ManufacturerCodeSql, CardCodeSql) SELECT Id, CIS, Compliance, ManufacturerCodeSql AS ManufacturerCode, CardCodeSql AS CardCode, Manufacturer, ProductName, ManufacturerCodeSql, CardCodeSql FROM Pcmcias"); migrationBuilder.DropTable("Pcmcias"); } #endregion #region TABLE: ScsiMode migrationBuilder.CreateTable( "ScsiMode", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), MediumType = table.Column(nullable: true), WriteProtected = table.Column(), Speed = table.Column(nullable: true), BufferedMode = table.Column(nullable: true), BlankCheckEnabled = table.Column(), DPOandFUA = table.Column() }, constraints: table => { table.PrimaryKey("PK_ScsiMode", x => x.Id); }); if (ScsiModesExists) { migrationBuilder.Sql( "INSERT INTO ScsiMode (Id, MediumType, WriteProtected, Speed, BufferedMode, BlankCheckEnabled, DPOandFUA) SELECT Id, MediumType, WriteProtected, Speed, BufferedMode, BlankCheckEnabled, DPOandFUA FROM ScsiModes"); migrationBuilder.DropTable("ScsiModes"); } #endregion #region TABLE: Ssc migrationBuilder.CreateTable( "Ssc", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), BlockSizeGranularity = table.Column(nullable: true), MaxBlockLength = table.Column(nullable: true), MinBlockLength = table.Column(nullable: true), MaxBlockLengthSql = table.Column(nullable: true), MinBlockLengthSql = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Ssc", x => x.Id); }); if (SscsExists) { migrationBuilder.Sql( "INSERT INTO Ssc (Id, BlockSizeGranularity, MaxBlockLength, MinBlockLength, MaxBlockLengthSql, MinBlockLengthSql) SELECT Id, BlockSizeGranularity, MaxBlockLengthSql AS MaxBlockLength, MinBlockLengthSql AS MinBlockLength, MaxBlockLengthSql, MinBlockLengthSql FROM Sscs"); migrationBuilder.DropTable("Sscs"); } #endregion #region TABLE: Usb migrationBuilder.CreateTable( "Usb", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), VendorID = table.Column(), ProductID = table.Column(), Manufacturer = table.Column(nullable: true), Product = table.Column(nullable: true), RemovableMedia = table.Column(), Descriptors = table.Column(nullable: true), VendorIDSql = table.Column(), ProductIDSql = table.Column() }, constraints: table => { table.PrimaryKey("PK_Usb", x => x.Id); }); if (UsbsExists) { migrationBuilder.Sql( "INSERT INTO Usb (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql) SELECT Id, VendorIDSql AS VendorID, ProductIDSql AS ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql FROM Usbs WHERE VendorIDSql >= 0 AND ProductIDSql >= 0"); migrationBuilder.Sql( "INSERT INTO Usb (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql) SELECT Id, (65536+VendorIDSql) AS VendorID, ProductIDSql AS ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql FROM Usbs WHERE VendorIDSql < 0 AND ProductIDSql >= 0"); migrationBuilder.Sql( "INSERT INTO Usb (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql) SELECT Id, VendorIDSql AS VendorID, (65536+ProductIDSql) AS ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql FROM Usbs WHERE VendorIDSql >= 0 AND ProductIDSql < 0"); migrationBuilder.Sql( "INSERT INTO Usb (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql) SELECT Id, (65536+VendorIDSql) AS VendorID, (65536+ProductIDSql) AS ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql FROM Usbs WHERE VendorIDSql < 0 AND ProductIDSql < 0"); migrationBuilder.DropTable("Usbs"); } #endregion #region TABLE: UsbVendors if (UsbVendorsExists) migrationBuilder.RenameTable("UsbVendors", newName: "UsbVendors_old"); migrationBuilder.CreateTable( "UsbVendors", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), VendorId = table.Column(), Vendor = table.Column(nullable: true), AddedWhen = table.Column(), ModifiedWhen = table.Column() }, constraints: table => { table.PrimaryKey("PK_UsbVendors", x => x.Id); }); if (UsbVendorsExists) { migrationBuilder.Sql( "INSERT INTO UsbVendors (Id, VendorId, Vendor, AddedWhen, ModifiedWhen) SELECT Id, VendorId, Vendor, AddedWhen, ModifiedWhen FROM UsbVendors_old"); migrationBuilder.DropTable("UsbVendors_old"); } #endregion #region TABLE: Versions if (VersionsExists) migrationBuilder.RenameTable("Versions", newName: "Versions_old"); migrationBuilder.CreateTable( "Versions", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Value = table.Column(nullable: true), Count = table.Column() }, constraints: table => { table.PrimaryKey("PK_Versions", x => x.Id); }); if (VersionsExists) { migrationBuilder.Sql( "INSERT INTO Versions (`Id`, `Value`, `Count`) SELECT `Id`, `Value`, `Count` FROM Versions_old"); migrationBuilder.DropTable("Versions_old"); } #endregion #region TABLE: Mmc migrationBuilder.CreateTable( "Mmc", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), FeaturesId = table.Column(nullable: true), ModeSense2AData = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Mmc", x => x.Id); table.ForeignKey( "FK_Mmc_MmcFeatures_FeaturesId", x => x.FeaturesId, "MmcFeatures", "Id", onDelete: ReferentialAction.Restrict); }); if (MmcsExists) { migrationBuilder.Sql( "INSERT INTO Mmc (Id, FeaturesId, ModeSense2AData) SELECT Id, Features_Id, ModeSense2AData FROM Mmcs WHERE EXISTS(SELECT 1 FROM MmcFeatures WHERE MmcFeatures.Id = Features_Id) OR Features_Id IS NULL"); migrationBuilder.DropTable("Mmcs"); } #endregion #region TABLE: BlockDescriptor migrationBuilder.CreateTable( "BlockDescriptor", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Density = table.Column(), Blocks = table.Column(nullable: true), BlockLength = table.Column(nullable: true), BlocksSql = table.Column(nullable: true), BlockLengthSql = table.Column(nullable: true), ScsiModeId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_BlockDescriptor", x => x.Id); table.ForeignKey( "FK_BlockDescriptor_ScsiMode_ScsiModeId", x => x.ScsiModeId, "ScsiMode", "Id", onDelete: ReferentialAction.Restrict); }); if (BlockDescriptorsExists) { migrationBuilder.Sql( "INSERT INTO BlockDescriptor (Id, Density, Blocks, BlocksSql, BlockLength, BlockLengthSql, ScsiModeId) SELECT Id, Density, BlocksSql AS Blocks, BlocksSql, BlockLengthSql AS BlockLength, BlockLengthSql, ScsiMode_Id FROM BlockDescriptors"); migrationBuilder.DropTable("BlockDescriptors"); } #endregion #region TABLE: TestedSequentialMedia migrationBuilder.CreateTable( "TestedSequentialMedia", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), CanReadMediaSerial = table.Column(nullable: true), Density = table.Column(nullable: true), Manufacturer = table.Column(nullable: true), MediaIsRecognized = table.Column(), MediumType = table.Column(nullable: true), MediumTypeName = table.Column(nullable: true), Model = table.Column(nullable: true), ModeSense6Data = table.Column(nullable: true), ModeSense10Data = table.Column(nullable: true), SscId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_TestedSequentialMedia", x => x.Id); table.ForeignKey( "FK_TestedSequentialMedia_Ssc_SscId", x => x.SscId, "Ssc", "Id", onDelete: ReferentialAction.Restrict); }); if (TestedSequentialMediasExists) { migrationBuilder.Sql( "INSERT INTO TestedSequentialMedia (Id, CanReadMediaSerial, Density, Manufacturer, MediaIsRecognized, MediumType, MediumTypeName, Model, ModeSense6Data, ModeSense10Data, SscId) SELECT Id, CanReadMediaSerial, Density, Manufacturer, MediaIsRecognized, MediumType, MediumTypeName, Model, ModeSense6Data, ModeSense10Data, Ssc_Id FROM TestedSequentialMedias"); migrationBuilder.DropTable("TestedSequentialMedias"); } #endregion #region TABLE: UsbProducts if (UsbProductsExists) migrationBuilder.RenameTable("UsbProducts", newName: "UsbProducts_old"); migrationBuilder.CreateTable( "UsbProducts", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), ProductId = table.Column(), Product = table.Column(nullable: true), AddedWhen = table.Column(), ModifiedWhen = table.Column(), VendorId = table.Column() }, constraints: table => { table.PrimaryKey("PK_UsbProducts", x => x.Id); table.ForeignKey( "FK_UsbProducts_UsbVendors_VendorId", x => x.VendorId, "UsbVendors", "Id", onDelete: ReferentialAction.Cascade); }); if (UsbProductsExists) { migrationBuilder.Sql( "INSERT INTO UsbProducts (Id, ProductId, Product, AddedWhen, ModifiedWhen, VendorId) SELECT Id, ProductId, Product, AddedWhen, ModifiedWhen, VendorId FROM UsbProducts_old"); migrationBuilder.DropTable("UsbProducts_old"); } #endregion #region TABLE: SscSupportedMedia migrationBuilder.CreateTable( "SscSupportedMedia", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), MediumType = table.Column(), Width = table.Column(), Length = table.Column(), Organization = table.Column(nullable: true), Name = table.Column(nullable: true), Description = table.Column(nullable: true), WidthSql = table.Column(), LengthSql = table.Column(), SscId = table.Column(nullable: true), TestedSequentialMediaId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_SscSupportedMedia", x => x.Id); table.ForeignKey( "FK_SscSupportedMedia_Ssc_SscId", x => x.SscId, "Ssc", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_SscSupportedMedia_TestedSequentialMedia_TestedSequentialMedi~", x => x.TestedSequentialMediaId, "TestedSequentialMedia", "Id", onDelete: ReferentialAction.Restrict); }); if (SscSupportedMediasExists) { migrationBuilder.Sql( "INSERT INTO SscSupportedMedia (Id, MediumType, Width, Length, Organization, Name, Description, WidthSql, LengthSql, SscId, TestedSequentialMediaId) SELECT Id, MediumType, WidthSql AS Width, LengthSql AS Length, Organization, Name, Description, WidthSql, LengthSql, Ssc_Id, TestedSequentialMedia_Id FROM SscSupportedMedias"); migrationBuilder.DropTable("SscSupportedMedias"); } #endregion #region TABLE: SupportedDensity migrationBuilder.CreateTable( "SupportedDensity", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), PrimaryCode = table.Column(), SecondaryCode = table.Column(), Writable = table.Column(), Duplicate = table.Column(), DefaultDensity = table.Column(), BitsPerMm = table.Column(), Width = table.Column(), Tracks = table.Column(), Capacity = table.Column(), Organization = table.Column(nullable: true), Name = table.Column(nullable: true), Description = table.Column(nullable: true), BitsPerMmSql = table.Column(), WidthSql = table.Column(), TracksSql = table.Column(), CapacitySql = table.Column(), SscId = table.Column(nullable: true), TestedSequentialMediaId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_SupportedDensity", x => x.Id); table.ForeignKey( "FK_SupportedDensity_Ssc_SscId", x => x.SscId, "Ssc", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_SupportedDensity_TestedSequentialMedia_TestedSequentialMedia~", x => x.TestedSequentialMediaId, "TestedSequentialMedia", "Id", onDelete: ReferentialAction.Restrict); }); if (SupportedDensitiesExists) { migrationBuilder.Sql( "INSERT INTO SupportedDensity (PrimaryCode, SecondaryCode, Writable, Duplicate, DefaultDensity, BitsPerMm, Width, Tracks, Capacity, Organization, Name, Description, BitsPerMmSql, WidthSql, TracksSql, CapacitySql, SscId, TestedSequentialMediaId) SELECT PrimaryCode, SecondaryCode, Writable, Duplicate, DefaultDensity, BitsPerMmSql AS BitsPerMm, WidthSql AS Width, TracksSql AS Tracks, CapacitySql AS Capacity, Organization, Name, Description, BitsPerMmSql, WidthSql, TracksSql, CapacitySql, Ssc_Id, TestedSequentialMedia_Id FROM SupportedDensities"); migrationBuilder.DropTable("SupportedDensities"); } #endregion #region TABLE: DensityCode migrationBuilder.CreateTable( "DensityCode", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Code = table.Column(), SscSupportedMediaId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_DensityCode", x => x.Id); table.ForeignKey( "FK_DensityCode_SscSupportedMedia_SscSupportedMediaId", x => x.SscSupportedMediaId, "SscSupportedMedia", "Id", onDelete: ReferentialAction.Restrict); }); if (DensityCodesExists) { migrationBuilder.Sql( "INSERT INTO DensityCode (Id, Code, SscSupportedMediaId) SELECT Id, Code, SscSupportedMedia_Id FROM DensityCodes"); migrationBuilder.DropTable("DensityCodes"); } #endregion #region TABLE: Devices if (DevicesExists) migrationBuilder.RenameTable("Devices", newName: "Devices_old"); migrationBuilder.CreateTable( "Devices", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), USBId = table.Column(nullable: true), FireWireId = table.Column(nullable: true), PCMCIAId = table.Column(nullable: true), CompactFlash = table.Column(), ATAId = table.Column(nullable: true), ATAPIId = table.Column(nullable: true), SCSIId = table.Column(nullable: true), MultiMediaCardId = table.Column(nullable: true), SecureDigitalId = table.Column(nullable: true), Manufacturer = table.Column(nullable: true), Model = table.Column(nullable: true), Revision = table.Column(nullable: true), Type = table.Column(), AddedWhen = table.Column(), ModifiedWhen = table.Column(nullable: true), CdOffsetId = table.Column(nullable: true), OptimalMultipleSectorsRead = table.Column() }, constraints: table => { table.PrimaryKey("PK_Devices", x => x.Id); table.ForeignKey( "FK_Devices_CdOffsets_CdOffsetId", x => x.CdOffsetId, "CdOffsets", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Devices_FireWire_FireWireId", x => x.FireWireId, "FireWire", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Devices_MmcSd_MultiMediaCardId", x => x.MultiMediaCardId, "MmcSd", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Devices_Pcmcia_PCMCIAId", x => x.PCMCIAId, "Pcmcia", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Devices_MmcSd_SecureDigitalId", x => x.SecureDigitalId, "MmcSd", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Devices_Usb_USBId", x => x.USBId, "Usb", "Id", onDelete: ReferentialAction.Restrict); }); if (DevicesExists) { migrationBuilder.Sql( "INSERT INTO Devices (Id, USBId, FireWireId, PCMCIAId, CompactFlash, ATAId, ATAPIId, SCSIId, MultiMediaCardId, SecureDigitalId, Manufacturer, Model, Revision, Type, AddedWhen, ModifiedWhen, CdOffsetId, OptimalMultipleSectorsRead) SELECT Id, USB_Id, FireWire_Id, PCMCIA_Id, CompactFlash, ATA_Id, ATAPI_Id, SCSI_Id, MultiMediaCard_Id, SecureDigital_Id, Manufacturer, Model, Revision, Type, AddedWhen, ModifiedWhen, CdOffset_Id, OptimalMultipleSectorsRead FROM Devices_old"); migrationBuilder.DropTable("Devices_old"); } #endregion #region TABLE: DeviceStats if (DeviceStatsExists) migrationBuilder.RenameTable("DeviceStats", newName: "DeviceStats_old"); migrationBuilder.CreateTable( "DeviceStats", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Manufacturer = table.Column(nullable: true), Model = table.Column(nullable: true), Revision = table.Column(nullable: true), Bus = table.Column(nullable: true), ReportId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_DeviceStats", x => x.Id); table.ForeignKey( "FK_DeviceStats_Devices_ReportId", x => x.ReportId, "Devices", "Id", onDelete: ReferentialAction.Restrict); }); if (DeviceStatsExists) { migrationBuilder.Sql( "INSERT INTO DeviceStats (Id, Manufacturer, Model, Revision, Bus, ReportId) SELECT Id, Manufacturer, Model, Revision, Bus, Report_Id FROM DeviceStats_old"); migrationBuilder.DropTable("DeviceStats_old"); } #endregion #region TABLE: Reports migrationBuilder.CreateTable( "Reports", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), USBId = table.Column(nullable: true), FireWireId = table.Column(nullable: true), PCMCIAId = table.Column(nullable: true), CompactFlash = table.Column(), ATAId = table.Column(nullable: true), ATAPIId = table.Column(nullable: true), SCSIId = table.Column(nullable: true), MultiMediaCardId = table.Column(nullable: true), SecureDigitalId = table.Column(nullable: true), Manufacturer = table.Column(nullable: true), Model = table.Column(nullable: true), Revision = table.Column(nullable: true), Type = table.Column(), UploadedWhen = table.Column() }, constraints: table => { table.PrimaryKey("PK_Reports", x => x.Id); table.ForeignKey( "FK_Reports_FireWire_FireWireId", x => x.FireWireId, "FireWire", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Reports_MmcSd_MultiMediaCardId", x => x.MultiMediaCardId, "MmcSd", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Reports_Pcmcia_PCMCIAId", x => x.PCMCIAId, "Pcmcia", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Reports_MmcSd_SecureDigitalId", x => x.SecureDigitalId, "MmcSd", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Reports_Usb_USBId", x => x.USBId, "Usb", "Id", onDelete: ReferentialAction.Restrict); }); if (UploadedReportsExists) { migrationBuilder.Sql( "INSERT INTO Reports (Id, USBId, FireWireId, PCMCIAId, CompactFlash, ATAId, ATAPIId, SCSIId, MultiMediaCardId, SecureDigitalId, Manufacturer, Model, Revision, Type, UploadedWhen) SELECT Id, USB_Id, FireWire_Id, PCMCIA_Id, CompactFlash, ATA_Id, ATAPI_Id, SCSI_Id, MultiMediaCard_Id, SecureDigital_Id, Manufacturer, Model, Revision, Type, UploadedWhen FROM UploadedReports"); migrationBuilder.DropTable("UploadedReports"); } #endregion #region TABLE: TestedMedia migrationBuilder.CreateTable( "TestedMedia", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), IdentifyData = table.Column(nullable: true), Blocks = table.Column(nullable: true), BlockSize = table.Column(nullable: true), CanReadAACS = table.Column(nullable: true), CanReadADIP = table.Column(nullable: true), CanReadATIP = table.Column(nullable: true), CanReadBCA = table.Column(nullable: true), CanReadC2Pointers = table.Column(nullable: true), CanReadCMI = table.Column(nullable: true), CanReadCorrectedSubchannel = table.Column(nullable: true), CanReadCorrectedSubchannelWithC2 = table.Column(nullable: true), CanReadDCB = table.Column(nullable: true), CanReadDDS = table.Column(nullable: true), CanReadDMI = table.Column(nullable: true), CanReadDiscInformation = table.Column(nullable: true), CanReadFullTOC = table.Column(nullable: true), CanReadHDCMI = table.Column(nullable: true), CanReadLayerCapacity = table.Column(nullable: true), CanReadFirstTrackPreGap = table.Column(nullable: true), CanReadLeadIn = table.Column(nullable: true), CanReadLeadOut = table.Column(nullable: true), CanReadMediaID = table.Column(nullable: true), CanReadMediaSerial = table.Column(nullable: true), CanReadPAC = table.Column(nullable: true), CanReadPFI = table.Column(nullable: true), CanReadPMA = table.Column(nullable: true), CanReadPQSubchannel = table.Column(nullable: true), CanReadPQSubchannelWithC2 = table.Column(nullable: true), CanReadPRI = table.Column(nullable: true), CanReadRWSubchannel = table.Column(nullable: true), CanReadRWSubchannelWithC2 = table.Column(nullable: true), CanReadRecordablePFI = table.Column(nullable: true), CanReadSpareAreaInformation = table.Column(nullable: true), CanReadTOC = table.Column(nullable: true), Density = table.Column(nullable: true), LongBlockSize = table.Column(nullable: true), Manufacturer = table.Column(nullable: true), MediaIsRecognized = table.Column(), MediumType = table.Column(nullable: true), MediumTypeName = table.Column(nullable: true), Model = table.Column(nullable: true), SupportsHLDTSTReadRawDVD = table.Column(nullable: true), SupportsNECReadCDDA = table.Column(nullable: true), SupportsPioneerReadCDDA = table.Column(nullable: true), SupportsPioneerReadCDDAMSF = table.Column(nullable: true), SupportsPlextorReadCDDA = table.Column(nullable: true), SupportsPlextorReadRawDVD = table.Column(nullable: true), SupportsRead10 = table.Column(nullable: true), SupportsRead12 = table.Column(nullable: true), SupportsRead16 = table.Column(nullable: true), SupportsRead6 = table.Column(nullable: true), SupportsReadCapacity16 = table.Column(nullable: true), SupportsReadCapacity = table.Column(nullable: true), SupportsReadCd = table.Column(nullable: true), SupportsReadCdMsf = table.Column(nullable: true), SupportsReadCdRaw = table.Column(nullable: true), SupportsReadCdMsfRaw = table.Column(nullable: true), SupportsReadLong16 = table.Column(nullable: true), SupportsReadLong = table.Column(nullable: true), ModeSense6Data = table.Column(nullable: true), ModeSense10Data = table.Column(nullable: true), CHSId = table.Column(nullable: true), CurrentCHSId = table.Column(nullable: true), LBASectors = table.Column(nullable: true), LBA48Sectors = table.Column(nullable: true), LogicalAlignment = table.Column(nullable: true), NominalRotationRate = table.Column(nullable: true), PhysicalBlockSize = table.Column(nullable: true), SolidStateDevice = table.Column(nullable: true), UnformattedBPT = table.Column(nullable: true), UnformattedBPS = table.Column(nullable: true), SupportsReadDmaLba = table.Column(nullable: true), SupportsReadDmaRetryLba = table.Column(nullable: true), SupportsReadLba = table.Column(nullable: true), SupportsReadRetryLba = table.Column(nullable: true), SupportsReadLongLba = table.Column(nullable: true), SupportsReadLongRetryLba = table.Column(nullable: true), SupportsSeekLba = table.Column(nullable: true), SupportsReadDmaLba48 = table.Column(nullable: true), SupportsReadLba48 = table.Column(nullable: true), SupportsReadDma = table.Column(nullable: true), SupportsReadDmaRetry = table.Column(nullable: true), SupportsReadRetry = table.Column(nullable: true), SupportsReadSectors = table.Column(nullable: true), SupportsReadLongRetry = table.Column(nullable: true), SupportsSeek = table.Column(nullable: true), CanReadingIntersessionLeadIn = table.Column(nullable: true), CanReadingIntersessionLeadOut = table.Column(nullable: true), IntersessionLeadInData = table.Column(nullable: true), IntersessionLeadOutData = table.Column(nullable: true), BlocksSql = table.Column(nullable: true), BlockSizeSql = table.Column(nullable: true), LongBlockSizeSql = table.Column(nullable: true), LBASectorsSql = table.Column(nullable: true), LBA48SectorsSql = table.Column(nullable: true), LogicalAlignmentSql = table.Column(nullable: true), NominalRotationRateSql = table.Column(nullable: true), PhysicalBlockSizeSql = table.Column(nullable: true), UnformattedBPTSql = table.Column(nullable: true), UnformattedBPSSql = table.Column(nullable: true), Read6Data = table.Column(nullable: true), Read10Data = table.Column(nullable: true), Read12Data = table.Column(nullable: true), Read16Data = table.Column(nullable: true), ReadLong10Data = table.Column(nullable: true), ReadLong16Data = table.Column(nullable: true), ReadSectorsData = table.Column(nullable: true), ReadSectorsRetryData = table.Column(nullable: true), ReadDmaData = table.Column(nullable: true), ReadDmaRetryData = table.Column(nullable: true), ReadLbaData = table.Column(nullable: true), ReadRetryLbaData = table.Column(nullable: true), ReadDmaLbaData = table.Column(nullable: true), ReadDmaRetryLbaData = table.Column(nullable: true), ReadLba48Data = table.Column(nullable: true), ReadDmaLba48Data = table.Column(nullable: true), ReadLongData = table.Column(nullable: true), ReadLongRetryData = table.Column(nullable: true), ReadLongLbaData = table.Column(nullable: true), ReadLongRetryLbaData = table.Column(nullable: true), TocData = table.Column(nullable: true), FullTocData = table.Column(nullable: true), AtipData = table.Column(nullable: true), PmaData = table.Column(nullable: true), ReadCdData = table.Column(nullable: true), ReadCdMsfData = table.Column(nullable: true), ReadCdFullData = table.Column(nullable: true), ReadCdMsfFullData = table.Column(nullable: true), Track1PregapData = table.Column(nullable: true), LeadInData = table.Column(nullable: true), LeadOutData = table.Column(nullable: true), C2PointersData = table.Column(nullable: true), PQSubchannelData = table.Column(nullable: true), RWSubchannelData = table.Column(nullable: true), CorrectedSubchannelData = table.Column(nullable: true), PQSubchannelWithC2Data = table.Column(nullable: true), RWSubchannelWithC2Data = table.Column(nullable: true), CorrectedSubchannelWithC2Data = table.Column(nullable: true), PfiData = table.Column(nullable: true), DmiData = table.Column(nullable: true), CmiData = table.Column(nullable: true), DvdBcaData = table.Column(nullable: true), DvdAacsData = table.Column(nullable: true), DvdDdsData = table.Column(nullable: true), DvdSaiData = table.Column(nullable: true), PriData = table.Column(nullable: true), EmbossedPfiData = table.Column(nullable: true), AdipData = table.Column(nullable: true), DcbData = table.Column(nullable: true), HdCmiData = table.Column(nullable: true), DvdLayerData = table.Column(nullable: true), BluBcaData = table.Column(nullable: true), BluDdsData = table.Column(nullable: true), BluSaiData = table.Column(nullable: true), BluDiData = table.Column(nullable: true), BluPacData = table.Column(nullable: true), PlextorReadCddaData = table.Column(nullable: true), PioneerReadCddaData = table.Column(nullable: true), PioneerReadCddaMsfData = table.Column(nullable: true), NecReadCddaData = table.Column(nullable: true), PlextorReadRawDVDData = table.Column(nullable: true), HLDTSTReadRawDVDData = table.Column(nullable: true), AtaId = table.Column(nullable: true), MmcId = table.Column(nullable: true), ScsiId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_TestedMedia", x => x.Id); table.ForeignKey( "FK_TestedMedia_Chs_CHSId", x => x.CHSId, "Chs", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_TestedMedia_Chs_CurrentCHSId", x => x.CurrentCHSId, "Chs", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_TestedMedia_Mmc_MmcId", x => x.MmcId, "Mmc", "Id", onDelete: ReferentialAction.Restrict); }); if (TestedMediasExists) { var preFormat = @"INSERT INTO TestedMedia (Id, IdentifyData, Blocks, BlockSize, CanReadAACS, CanReadADIP, CanReadATIP, CanReadBCA, CanReadC2Pointers, CanReadCMI, CanReadCorrectedSubchannel, CanReadCorrectedSubchannelWithC2, CanReadDCB, CanReadDDS, CanReadDMI, CanReadDiscInformation, CanReadFullTOC, CanReadHDCMI, CanReadLayerCapacity, CanReadFirstTrackPreGap, CanReadLeadIn, CanReadLeadOut, CanReadMediaID, CanReadMediaSerial, CanReadPAC, CanReadPFI, CanReadPMA, CanReadPQSubchannel, CanReadPQSubchannelWithC2, CanReadPRI, CanReadRWSubchannel, CanReadRWSubchannelWithC2, CanReadRecordablePFI, CanReadSpareAreaInformation, CanReadTOC, Density, LongBlockSize, Manufacturer, MediaIsRecognized, MediumType, MediumTypeName, Model, SupportsHLDTSTReadRawDVD, SupportsNECReadCDDA, SupportsPioneerReadCDDA, SupportsPioneerReadCDDAMSF, SupportsPlextorReadCDDA, SupportsPlextorReadRawDVD, SupportsRead10, SupportsRead12, SupportsRead16, SupportsRead6, SupportsReadCapacity16, SupportsReadCapacity, SupportsReadCd, SupportsReadCdMsf, SupportsReadCdRaw, SupportsReadCdMsfRaw, SupportsReadLong16, SupportsReadLong, ModeSense6Data, ModeSense10Data, CHSId, CurrentCHSId, LBASectors, LBA48Sectors, LogicalAlignment, NominalRotationRate, PhysicalBlockSize, SolidStateDevice, UnformattedBPT, UnformattedBPS, SupportsReadDmaLba, SupportsReadDmaRetryLba, SupportsReadLba, SupportsReadRetryLba, SupportsReadLongLba, SupportsReadLongRetryLba, SupportsSeekLba, SupportsReadDmaLba48, SupportsReadLba48, SupportsReadDma, SupportsReadDmaRetry, SupportsReadRetry, SupportsReadSectors, SupportsReadLongRetry, SupportsSeek, CanReadingIntersessionLeadIn, CanReadingIntersessionLeadOut, IntersessionLeadInData, IntersessionLeadOutData, BlocksSql, BlockSizeSql, LongBlockSizeSql, LBASectorsSql, LBA48SectorsSql, LogicalAlignmentSql, NominalRotationRateSql, PhysicalBlockSizeSql, UnformattedBPTSql, UnformattedBPSSql, Read6Data, Read10Data, Read12Data, Read16Data, ReadLong10Data, ReadLong16Data, ReadSectorsData, ReadSectorsRetryData, ReadDmaData, ReadDmaRetryData, ReadLbaData, ReadRetryLbaData, ReadDmaLbaData, ReadDmaRetryLbaData, ReadLba48Data, ReadDmaLba48Data, ReadLongData, ReadLongRetryData, ReadLongLbaData, ReadLongRetryLbaData, TocData, FullTocData, AtipData, PmaData, ReadCdData, ReadCdMsfData, ReadCdFullData, ReadCdMsfFullData, Track1PregapData, LeadInData, LeadOutData, C2PointersData, PQSubchannelData, RWSubchannelData, CorrectedSubchannelData, PQSubchannelWithC2Data, RWSubchannelWithC2Data, CorrectedSubchannelWithC2Data, PfiData, DmiData, CmiData, DvdBcaData, DvdAacsData, DvdDdsData, DvdSaiData, PriData, EmbossedPfiData, AdipData, DcbData, HdCmiData, DvdLayerData, BluBcaData, BluDdsData, BluSaiData, BluDiData, BluPacData, PlextorReadCddaData, PioneerReadCddaData, PioneerReadCddaMsfData, NecReadCddaData, PlextorReadRawDVDData, HLDTSTReadRawDVDData, AtaId, MmcId, ScsiId) SELECT Id, IdentifyData, BlocksSql AS Blocks, BlockSizeSql AS BlockSize, CanReadAACS, CanReadADIP, CanReadATIP, CanReadBCA, CanReadC2Pointers, CanReadCMI, CanReadCorrectedSubchannel, CanReadCorrectedSubchannelWithC2, CanReadDCB, CanReadDDS, CanReadDMI, CanReadDiscInformation, CanReadFullTOC, CanReadHDCMI, CanReadLayerCapacity, CanReadFirstTrackPreGap, CanReadLeadIn, CanReadLeadOut, CanReadMediaID, CanReadMediaSerial, CanReadPAC, CanReadPFI, CanReadPMA, CanReadPQSubchannel, CanReadPQSubchannelWithC2, CanReadPRI, CanReadRWSubchannel, CanReadRWSubchannelWithC2, CanReadRecordablePFI, CanReadSpareAreaInformation, CanReadTOC, Density, LongBlockSizeSql AS LongBlockSize, Manufacturer, MediaIsRecognized, MediumType, MediumTypeName, Model, SupportsHLDTSTReadRawDVD, SupportsNECReadCDDA, SupportsPioneerReadCDDA, SupportsPioneerReadCDDAMSF, SupportsPlextorReadCDDA, SupportsPlextorReadRawDVD, SupportsRead10, SupportsRead12, SupportsRead16, SupportsRead6, SupportsReadCapacity16, SupportsReadCapacity, SupportsReadCd, SupportsReadCdMsf, SupportsReadCdRaw, SupportsReadCdMsfRaw, SupportsReadLong16, SupportsReadLong, ModeSense6Data, ModeSense10Data, CHS_Id, CurrentCHS_Id, LBASectorsSql AS LBASectors, LBA48SectorsSql AS LBA48Sectors, LogicalAlignmentSql AS LogicalAlignment,NominalRotationRateSql AS NominalRotationRate, PhysicalBlockSizeSql AS PhysicalBlockSize, SolidStateDevice, {0} AS UnformattedBPT, UnformattedBPSSql AS UnformattedBPS, SupportsReadDmaLba, SupportsReadDmaRetryLba, SupportsReadLba, SupportsReadRetryLba, SupportsReadLongLba, SupportsReadLongRetryLba, SupportsSeekLba, SupportsReadDmaLba48, SupportsReadLba48, SupportsReadDma, SupportsReadDmaRetry, SupportsReadRetry, SupportsReadSectors, SupportsReadLongRetry, SupportsSeek, CanReadingIntersessionLeadIn, CanReadingIntersessionLeadOut, IntersessionLeadInData, IntersessionLeadOutData, BlocksSql, BlockSizeSql, LongBlockSizeSql, LBASectorsSql, LBA48SectorsSql, LogicalAlignmentSql, NominalRotationRateSql, PhysicalBlockSizeSql, UnformattedBPTSql, UnformattedBPSSql, Read6Data, Read10Data, Read12Data, Read16Data, ReadLong10Data, ReadLong16Data, ReadSectorsData, ReadSectorsRetryData, ReadDmaData, ReadDmaRetryData, ReadLbaData, ReadRetryLbaData, ReadDmaLbaData, ReadDmaRetryLbaData, ReadLba48Data, ReadDmaLba48Data, ReadLongData, ReadLongRetryData, ReadLongLbaData, ReadLongRetryLbaData, TocData, FullTocData, AtipData, PmaData, ReadCdData, ReadCdMsfData, ReadCdFullData, ReadCdMsfFullData, Track1PregapData, LeadInData, LeadOutData, C2PointersData, PQSubchannelData, RWSubchannelData, CorrectedSubchannelData, PQSubchannelWithC2Data, RWSubchannelWithC2Data, CorrectedSubchannelWithC2Data, PfiData, DmiData, CmiData, DvdBcaData, DvdAacsData, DvdDdsData, DvdSaiData, PriData, EmbossedPfiData, AdipData, DcbData, HdCmiData, DvdLayerData, BluBcaData, BluDdsData, BluSaiData, BluDiData, BluPacData, PlextorReadCddaData, PioneerReadCddaData, PioneerReadCddaMsfData, NecReadCddaData, PlextorReadRawDVDData, HLDTSTReadRawDVDData, Ata_Id, Mmc_Id, Scsi_Id FROM TestedMedias WHERE (EXISTS(SELECT 1 FROM Atas WHERE Atas.Id = Ata_Id) OR Ata_Id IS NULL) AND (EXISTS(SELECT 1 FROM Scsis WHERE Scsis.Id = SCSI_Id) OR SCSI_Id IS NULL) AND (EXISTS(SELECT 1 FROM Chs WHERE Chs.Id = CHS_Id) OR CHS_Id IS NULL) AND (EXISTS(SELECT 1 FROM Chs WHERE Chs.Id = CurrentCHS_Id) OR CurrentCHS_Id IS NULL) AND (EXISTS(SELECT 1 FROM Mmc WHERE Mmc.Id = Mmc_Id) OR Mmc_Id IS NULL) AND UnformattedBPTSql {1}"; migrationBuilder.Sql(string.Format(preFormat, "UnformattedBPTSql", "IS NULL")); migrationBuilder.Sql(string.Format(preFormat, "UnformattedBPTSql", ">= 0")); migrationBuilder.Sql(string.Format(preFormat, "(65536+UnformattedBPTSql)", "< 0")); migrationBuilder.DropTable("TestedMedias"); } #endregion #region TABLE: Ata migrationBuilder.CreateTable( "Ata", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Identify = table.Column(nullable: true), ReadCapabilitiesId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Ata", x => x.Id); table.ForeignKey( "FK_Ata_TestedMedia_ReadCapabilitiesId", x => x.ReadCapabilitiesId, "TestedMedia", "Id", onDelete: ReferentialAction.Restrict); }); if (AtasExists) { migrationBuilder.Sql( "INSERT INTO Ata (Id, Identify, ReadCapabilitiesId) SELECT Id, Identify, ReadCapabilities_Id FROM Atas"); migrationBuilder.DropTable("Atas"); } #endregion #region TABLE: Scsi migrationBuilder.CreateTable( "Scsi", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), InquiryData = table.Column(nullable: true), SupportsModeSense6 = table.Column(), SupportsModeSense10 = table.Column(), SupportsModeSubpages = table.Column(), ModeSenseId = table.Column(nullable: true), MultiMediaDeviceId = table.Column(nullable: true), ReadCapabilitiesId = table.Column(nullable: true), SequentialDeviceId = table.Column(nullable: true), ModeSense6Data = table.Column(nullable: true), ModeSense10Data = table.Column(nullable: true), ModeSense6CurrentData = table.Column(nullable: true), ModeSense10CurrentData = table.Column(nullable: true), ModeSense6ChangeableData = table.Column(nullable: true), ModeSense10ChangeableData = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Scsi", x => x.Id); table.ForeignKey( "FK_Scsi_ScsiMode_ModeSenseId", x => x.ModeSenseId, "ScsiMode", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Scsi_Mmc_MultiMediaDeviceId", x => x.MultiMediaDeviceId, "Mmc", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Scsi_TestedMedia_ReadCapabilitiesId", x => x.ReadCapabilitiesId, "TestedMedia", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_Scsi_Ssc_SequentialDeviceId", x => x.SequentialDeviceId, "Ssc", "Id", onDelete: ReferentialAction.Restrict); }); if (ScsisExists) { migrationBuilder.Sql( "INSERT INTO Scsi (Id, InquiryData, SupportsModeSense6, SupportsModeSense10, SupportsModeSubpages, ModeSenseId, MultiMediaDeviceId, ReadCapabilitiesId, SequentialDeviceId, ModeSense6Data, ModeSense10Data, ModeSense6CurrentData, ModeSense10CurrentData, ModeSense6ChangeableData, ModeSense10ChangeableData) SELECT Id, InquiryData, SupportsModeSense6, SupportsModeSense10, SupportsModeSubpages, ModeSense_Id, MultiMediaDevice_Id, ReadCapabilities_Id, SequentialDevice_Id, ModeSense6Data, ModeSense10Data, ModeSense6CurrentData, ModeSense10CurrentData, ModeSense6ChangeableData, ModeSense10ChangeableData FROM Scsis WHERE EXISTS(SELECT 1 from Mmc WHERE Mmc.Id = Scsis.MultiMediaDevice_Id) OR MultiMediaDevice_Id IS NULL"); migrationBuilder.DropTable("Scsis"); } #endregion #region TABLE: ScsiPage migrationBuilder.CreateTable( "ScsiPage", table => new { Id = table.Column() .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), page = table.Column(), subpage = table.Column(nullable: true), value = table.Column(nullable: true), ScsiId = table.Column(nullable: true), ScsiModeId = table.Column(nullable: true) }, constraints: table => { table.PrimaryKey("PK_ScsiPage", x => x.Id); table.ForeignKey( "FK_ScsiPage_Scsi_ScsiId", x => x.ScsiId, "Scsi", "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( "FK_ScsiPage_ScsiMode_ScsiModeId", x => x.ScsiModeId, "ScsiMode", "Id", onDelete: ReferentialAction.Restrict); }); if (ScsiPagesExists) { migrationBuilder.Sql( "INSERT INTO ScsiPage (Id, page, subpage, value, ScsiId, ScsiModeId) SELECT Id, page, subpage, value, Scsi_Id, ScsiMode_Id FROM ScsiPages"); migrationBuilder.DropTable("ScsiPages"); } #endregion migrationBuilder.CreateIndex( "IX_Ata_ReadCapabilitiesId", "Ata", "ReadCapabilitiesId"); migrationBuilder.CreateIndex( "IX_BlockDescriptor_ScsiModeId", "BlockDescriptor", "ScsiModeId"); migrationBuilder.CreateIndex( "IX_CdOffsets_ModifiedWhen", "CdOffsets", "ModifiedWhen"); migrationBuilder.CreateIndex( "IX_DensityCode_SscSupportedMediaId", "DensityCode", "SscSupportedMediaId"); migrationBuilder.CreateIndex( "IX_Devices_ATAId", "Devices", "ATAId"); migrationBuilder.CreateIndex( "IX_Devices_ATAPIId", "Devices", "ATAPIId"); migrationBuilder.CreateIndex( "IX_Devices_CdOffsetId", "Devices", "CdOffsetId"); migrationBuilder.CreateIndex( "IX_Devices_FireWireId", "Devices", "FireWireId"); migrationBuilder.CreateIndex( "IX_Devices_ModifiedWhen", "Devices", "ModifiedWhen"); migrationBuilder.CreateIndex( "IX_Devices_MultiMediaCardId", "Devices", "MultiMediaCardId"); migrationBuilder.CreateIndex( "IX_Devices_PCMCIAId", "Devices", "PCMCIAId"); migrationBuilder.CreateIndex( "IX_Devices_SCSIId", "Devices", "SCSIId"); migrationBuilder.CreateIndex( "IX_Devices_SecureDigitalId", "Devices", "SecureDigitalId"); migrationBuilder.CreateIndex( "IX_Devices_USBId", "Devices", "USBId"); migrationBuilder.CreateIndex( "IX_DeviceStats_ReportId", "DeviceStats", "ReportId"); migrationBuilder.CreateIndex( "IX_Mmc_FeaturesId", "Mmc", "FeaturesId"); migrationBuilder.CreateIndex( "IX_Reports_ATAId", "Reports", "ATAId"); migrationBuilder.CreateIndex( "IX_Reports_ATAPIId", "Reports", "ATAPIId"); migrationBuilder.CreateIndex( "IX_Reports_FireWireId", "Reports", "FireWireId"); migrationBuilder.CreateIndex( "IX_Reports_MultiMediaCardId", "Reports", "MultiMediaCardId"); migrationBuilder.CreateIndex( "IX_Reports_PCMCIAId", "Reports", "PCMCIAId"); migrationBuilder.CreateIndex( "IX_Reports_SCSIId", "Reports", "SCSIId"); migrationBuilder.CreateIndex( "IX_Reports_SecureDigitalId", "Reports", "SecureDigitalId"); migrationBuilder.CreateIndex( "IX_Reports_USBId", "Reports", "USBId"); migrationBuilder.CreateIndex( "IX_Scsi_ModeSenseId", "Scsi", "ModeSenseId"); migrationBuilder.CreateIndex( "IX_Scsi_MultiMediaDeviceId", "Scsi", "MultiMediaDeviceId"); migrationBuilder.CreateIndex( "IX_Scsi_ReadCapabilitiesId", "Scsi", "ReadCapabilitiesId"); migrationBuilder.CreateIndex( "IX_Scsi_SequentialDeviceId", "Scsi", "SequentialDeviceId"); migrationBuilder.CreateIndex( "IX_ScsiPage_ScsiId", "ScsiPage", "ScsiId"); migrationBuilder.CreateIndex( "IX_ScsiPage_ScsiModeId", "ScsiPage", "ScsiModeId"); migrationBuilder.CreateIndex( "IX_SscSupportedMedia_SscId", "SscSupportedMedia", "SscId"); migrationBuilder.CreateIndex( "IX_SscSupportedMedia_TestedSequentialMediaId", "SscSupportedMedia", "TestedSequentialMediaId"); migrationBuilder.CreateIndex( "IX_SupportedDensity_SscId", "SupportedDensity", "SscId"); migrationBuilder.CreateIndex( "IX_SupportedDensity_TestedSequentialMediaId", "SupportedDensity", "TestedSequentialMediaId"); migrationBuilder.CreateIndex( "IX_TestedMedia_AtaId", "TestedMedia", "AtaId"); migrationBuilder.CreateIndex( "IX_TestedMedia_CHSId", "TestedMedia", "CHSId"); migrationBuilder.CreateIndex( "IX_TestedMedia_CurrentCHSId", "TestedMedia", "CurrentCHSId"); migrationBuilder.CreateIndex( "IX_TestedMedia_MmcId", "TestedMedia", "MmcId"); migrationBuilder.CreateIndex( "IX_TestedMedia_ScsiId", "TestedMedia", "ScsiId"); migrationBuilder.CreateIndex( "IX_TestedSequentialMedia_SscId", "TestedSequentialMedia", "SscId"); migrationBuilder.CreateIndex( "IX_UsbProducts_ModifiedWhen", "UsbProducts", "ModifiedWhen"); migrationBuilder.CreateIndex( "IX_UsbProducts_ProductId", "UsbProducts", "ProductId"); migrationBuilder.CreateIndex( "IX_UsbProducts_VendorId", "UsbProducts", "VendorId"); migrationBuilder.CreateIndex( "IX_UsbVendors_ModifiedWhen", "UsbVendors", "ModifiedWhen"); migrationBuilder.CreateIndex( "IX_UsbVendors_VendorId", "UsbVendors", "VendorId", unique: true); migrationBuilder.AddForeignKey( "FK_Devices_Ata_ATAId", "Devices", "ATAId", "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( "FK_Devices_Ata_ATAPIId", "Devices", "ATAPIId", "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( "FK_Devices_Scsi_SCSIId", "Devices", "SCSIId", "Scsi", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( "FK_Reports_Ata_ATAId", "Reports", "ATAId", "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( "FK_Reports_Ata_ATAPIId", "Reports", "ATAPIId", "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.Sql( "DELETE FROM Reports WHERE NOT EXISTS(SELECT 1 from Scsi WHERE Scsi.Id = SCSIId) AND SCSIId IS NOT NULL"); migrationBuilder.AddForeignKey( "FK_Reports_Scsi_SCSIId", "Reports", "SCSIId", "Scsi", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( "FK_TestedMedia_Ata_AtaId", "TestedMedia", "AtaId", "Ata", principalColumn: "Id", onDelete: ReferentialAction.Restrict); migrationBuilder.AddForeignKey( "FK_TestedMedia_Scsi_ScsiId", "TestedMedia", "ScsiId", "Scsi", principalColumn: "Id", onDelete: ReferentialAction.Restrict); if (EFExists) migrationBuilder.DropTable("__MigrationHistory"); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropForeignKey( "FK_Ata_TestedMedia_ReadCapabilitiesId", "Ata"); migrationBuilder.DropForeignKey( "FK_Scsi_TestedMedia_ReadCapabilitiesId", "Scsi"); migrationBuilder.DropTable( "BlockDescriptor"); migrationBuilder.DropTable( "Commands"); migrationBuilder.DropTable( "DensityCode"); migrationBuilder.DropTable( "DeviceStats"); migrationBuilder.DropTable( "Filesystems"); migrationBuilder.DropTable( "Filters"); migrationBuilder.DropTable( "MediaFormats"); migrationBuilder.DropTable( "Medias"); migrationBuilder.DropTable( "OperatingSystems"); migrationBuilder.DropTable( "Partitions"); migrationBuilder.DropTable( "Reports"); migrationBuilder.DropTable( "ScsiPage"); migrationBuilder.DropTable( "SupportedDensity"); migrationBuilder.DropTable( "UsbProducts"); migrationBuilder.DropTable( "Versions"); migrationBuilder.DropTable( "SscSupportedMedia"); migrationBuilder.DropTable( "Devices"); migrationBuilder.DropTable( "UsbVendors"); migrationBuilder.DropTable( "TestedSequentialMedia"); migrationBuilder.DropTable( "CdOffsets"); migrationBuilder.DropTable( "FireWire"); migrationBuilder.DropTable( "MmcSd"); migrationBuilder.DropTable( "Pcmcia"); migrationBuilder.DropTable( "Usb"); migrationBuilder.DropTable( "TestedMedia"); migrationBuilder.DropTable( "Ata"); migrationBuilder.DropTable( "Chs"); migrationBuilder.DropTable( "Scsi"); migrationBuilder.DropTable( "ScsiMode"); migrationBuilder.DropTable( "Mmc"); migrationBuilder.DropTable( "Ssc"); migrationBuilder.DropTable( "MmcFeatures"); } } }