예제 #1
0
        public IManageMigrations Build()
        {
            if (_resolver == null)
            {
                throw new InvalidOperationException("Missing dependency resolver");
            }
            var types = _asm
                        .SelectMany(a => AssemblyExtensions.GetTypesImplementing <IMigrationTask>(a, true)
                                    .Select(t => (IMigrationTask)_resolver.Resolve(t)))
                        .Where(t => t.CurrentVersion != null)
                        .ToArray();

            if (types.Length == 0)
            {
                throw new MigrationNotFoundException("None of the provided assemblies contained SqlFu migrations");
            }

            var runner = new MigrationTaskRunner(_db, _log);

            return(new MigrationsManager(GetSchemaExecutors(types, runner), runner));
        }