private EvolutionHistory LoadEvolutionHistory() { var ids = ExecuteSqlQuery($"SELECT database_id FROM master.sys.databases WHERE name = '{_databaseName}'", row => (int)row["database_id"]); if (ids.Any()) { string upgrade = $@"IF COL_LENGTH('[{_databaseName}].[dbo].[__EvolutionHistoryPrerequisite]', 'Ordinal') IS NULL BEGIN ALTER TABLE [{_databaseName}].[dbo].[__EvolutionHistoryPrerequisite] ADD [Ordinal] INT NOT NULL CONSTRAINT [DF_EvolutionHistoryPrerequisite_Ordinal] DEFAULT (1) ALTER TABLE [{_databaseName}].[dbo].[__EvolutionHistoryPrerequisite] DROP CONSTRAINT [DF_EvolutionHistoryPrerequisite_Ordinal] END"; ExecuteSqlCommand(upgrade); var rows = ExecuteSqlQuery($@"SELECT h.[Type], h.[HashCode], h.[Attributes], j.[Role], p.[HashCode] AS [PrerequisiteHashCode] FROM [{_databaseName}].[dbo].[__EvolutionHistory] h LEFT JOIN [{_databaseName}].[dbo].[__EvolutionHistoryPrerequisite] j ON h.GeneId = j.GeneId LEFT JOIN [{_databaseName}].[dbo].[__EvolutionHistory] p ON j.PrerequisiteGeneId = p.GeneId ORDER BY h.GeneId, j.Role, j.Ordinal, p.GeneId", row => new EvolutionHistoryRow { Type = LoadString(row["Type"]), HashCode = LoadBigInteger(row["HashCode"]), Attributes = LoadString(row["Attributes"]), Role = LoadString(row["Role"]), PrerequisiteHashCode = LoadBigInteger(row["PrerequisiteHashCode"]) }); return(EvolutionHistory.LoadMementos(LoadMementos(rows))); } else { return(new EvolutionHistory()); } }
private EvolutionHistory WhenLoadEvolutionHistory(GeneMemento[] mementos) { return EvolutionHistory.LoadMementos(mementos); }