using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Data.SeaHavenIndustries.Migrations { /// public partial class SH198_VendorCompanyNotesAndRowVersion : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn( name: "Notes", table: "VendorCompanies", type: "nvarchar(max)", nullable: true); migrationBuilder.AddColumn( name: "RowVersion", table: "VendorCompanies", type: "rowversion", rowVersion: true, nullable: true); // Backfill VendorCompany.Notes (vendor-directory source) deterministically // from the most recently modified then highest-id nonempty Vendor.Notes. // Vendor.Notes is retained separately for work-order editor compatibility; // roster/directory paths read VendorCompany.Notes. migrationBuilder.Sql(@" ;WITH SourceNotes AS ( SELECT v.[CompanyId], v.[Notes], ROW_NUMBER() OVER ( PARTITION BY v.[CompanyId] ORDER BY v.[LastModificationTime] DESC, v.[Id] DESC ) AS [RowNumber] FROM [Vendors] v WHERE v.[CompanyId] IS NOT NULL AND v.[Notes] IS NOT NULL AND LTRIM(RTRIM(v.[Notes])) <> '' ) UPDATE vc SET vc.[Notes] = src.[Notes] FROM [VendorCompanies] vc INNER JOIN SourceNotes src ON src.[CompanyId] = vc.[Id] WHERE src.[RowNumber] = 1; "); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropColumn( name: "Notes", table: "VendorCompanies"); migrationBuilder.DropColumn( name: "RowVersion", table: "VendorCompanies"); } } }