public void LoadMigrations() { var types = Assembly .GetExecutingAssembly() .GetTypes() .Where(x => x.GetInterfaces().FirstOrDefault(i => i == typeof(IContentMigration)) != null) .OrderBy(x => x.Name) .ToList(); foreach (var type in types) { if (Migrations.GetOneAsync(x => x.Id == type.Name).Result == null) { var migration = (IContentMigration)Activator.CreateInstance(type); migration.Up(this); Migrations.InsertOneAtomicallyAsync(new ContentMigration() { Id = type.Name }).Wait(); } } }