public bool UpdateNeeded() { if (updateNeeded != null) { return(updateNeeded.Value); } lock (@lock) { if (updateNeeded != null) { return(updateNeeded.Value); } var connectionString = connectionStringSettings.ConnectionString; string error; if (databaseProvider.TryConnect(connectionString, out error)) { var connectionFactory = databaseProvider.GetConnectionFactory(connectionString); var currentScripts = database.GetCoreExecutedScripts(connectionFactory); var requiredScripts = database.GetCoreRequiredScripts(connectionFactory); var notRun = requiredScripts.Select(x => x.Trim().ToLowerInvariant()) .Except(currentScripts.Select(x => x.Trim().ToLowerInvariant())) .ToList(); updateNeeded = notRun.Count > 0 || ExtensionsRequireUpdate(extensions, database, databaseProvider, connectionString); } else { updateNeeded = true; } return(updateNeeded.Value); } }
private void RequiredApplicationVersionIs(int version) { applicationDatabase .GetCoreRequiredScripts(Arg.Any <Func <IDbConnection> >()) .Returns(Enumerable.Range(1, version).Select(x => "Script" + x + ".sql").ToArray()); }