コード例 #1
0
        /// <summary>
        /// Gets all scripts that should be executed.
        /// </summary>
        /// <returns></returns>
        public IEnumerable <SqlScript> GetScripts(DbUp.Engine.Transactions.IConnectionManager connectionManager)
        {
            var providerRegex = new Regex(@"_(?<Provider>.*?)\.");

            return(assembly
                   .GetManifestResourceNames()
                   .Where(filter)
                   .GroupBy(f => providerRegex.Replace(f, "."))
                   .Select(g =>
            {
                if (g.Count() == 1)
                {
                    return g.Single();
                }

                var matchingProvider = g.FirstOrDefault(
                    s =>
                {
                    var @group = providerRegex.Match(s).Groups["Provider"];
                    return @group.Success &&
                    @group.Value == databaseProviderName;
                });

                return
                matchingProvider ??
                g.FirstOrDefault(s => !providerRegex.Match(s).Groups["Provider"].Success);
            })
                   .OrderBy(x => x)
                   .Select(ReadResourceAsScript)
                   .ToList());
        }