コード例 #1
0
ファイル: BatchScripter.cs プロジェクト: Eisai/pragmasql
        public string ScriptObjects(ScriptingArgs args)
        {
            if (args == null || args.Objects == null || args.Objects.Count == 0)
            {
                return(String.Empty);
            }

            FireTaskProgressInfo("Preparing for scripting...");

            scrp.Options              = args.Options;
            scrp.Options.ToFileOnly   = false;
            scrp.Options.AppendToFile = false;
            scrp.Options.FileName     = String.Empty;
            scrp.Server.ConnectionContext.BatchSeparator = "GO";
            StringCollection scr = null;

            _recentErrors = null;

            if (scrp.Options.ContinueScriptingOnError)
            {
                _recentErrors        = new StringBuilder();
                scrp.ScriptingError += new ScriptingErrorEventHandler(scrp_ScriptingError);
            }

            try
            {
                if (scrp.Options.WithDependencies)
                {
                    scrp.DiscoveryProgress += new ProgressReportEventHandler(dWalk_DiscoveryProgress);
                    FireTaskProgressInfo("Discovering dependencies. (Task 1 of 3)");
                    DependencyTree dTree = scrp.DiscoverDependencies(PrepareObjectUrns(args.Objects), DependencyType.Parents);
                    FireTaskProgressInfo("Walking dependencies. (Task 2 of 3)");
                    DependencyCollection dCol = scrp.WalkDependencies(dTree);
                    FireTaskProgressInfo("Scripting objects. (Task 3 of 3)");
                    scr = scrp.ScriptWithList(dCol);
                }
                else
                {
                    FireTaskProgressInfo("Scripting objects. (Task 1 of 1)");
                    scr = scrp.ScriptWithList(PrepareObjectUrns(args.Objects));
                }
            }
            catch (Exception ex)
            {
                if (_cancelRequested)
                {
                    return(String.Empty);
                }
                throw ex;
            }

            string myComment = "/***** Script generated with PragmaSQL Scripter on " + DateTime.Now.ToString() + " ******/";

            string[] result = new string[scr.Count];
            scr.CopyTo(result, 0);

            return(myComment + "\r\n" + String.Join((String.IsNullOrEmpty(args.BatchSeparator) ? "\r\n" : "\r\n" + args.BatchSeparator + "\r\n"), result));
        }