Exemple #1
0
        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 CurrentSchemaVersionIs(int version)
 {
     applicationDatabase
     .GetCoreExecutedScripts(Arg.Any <Func <IDbConnection> >())
     .Returns(Enumerable.Range(1, version).Select(x => "Script" + x + ".sql").ToArray());
 }