Esempio n. 1
0
		private static void WriteOutput(TextWriter writer, DdlWriterCommandLine cmdLine)
		{
			try
			{
				// load the persistent store defined by the current set of binaries
				var store = (PersistentStore)PersistentStoreRegistry.GetDefaultStore();

				// get config

				// run pre-processors
				var preProcessor = new PreProcessor(cmdLine.CreateIndexes, cmdLine.AutoIndexForeignKeys);
				preProcessor.Process(store);


				// if this is an upgrade, load the baseline model file
				RelationalModelInfo baselineModel = null;
				if (!string.IsNullOrEmpty(cmdLine.BaselineModelFile))
				{
					var serializer = new RelationalModelSerializer();
					baselineModel = serializer.ReadModel(File.OpenText(cmdLine.BaselineModelFile));
				}

				switch (cmdLine.Format)
				{
					case DdlWriterCommandLine.FormatOptions.sql:

						// create script writer and set properties based on command line 
						var scriptWriter = new ScriptWriter(store)
											{
												Options = new RelationalSchemaOptions
															{
																EnumOption = cmdLine.EnumOption,
																SuppressForeignKeys = !cmdLine.CreateForeignKeys,
																SuppressUniqueConstraints = !cmdLine.CreateUniqueKeys,
																NamespaceFilter = new RelationalSchemaOptions.NamespaceFilterOption(cmdLine.Namespace)
															},
												QualifyNames = cmdLine.QualifyNames,
												BaselineModel = baselineModel
											};

						// decide whether to write a creation or upgrade script, depending on if a baseline was supplied
						if (baselineModel == null)
							scriptWriter.WriteCreateScript(writer);
						else
							scriptWriter.WriteUpgradeScript(writer);

						break;

					case DdlWriterCommandLine.FormatOptions.xml:

						// we don't currently support outputting upgrades in XML format
						if (baselineModel != null)
							throw new NotSupportedException("Upgrade is not compatible with XML output format.");

						var serializer = new RelationalModelSerializer();
						var relationalModelInfo = new RelationalModelInfo(store, new RelationalSchemaOptions.NamespaceFilterOption(cmdLine.Namespace));
						serializer.WriteModel(relationalModelInfo, writer);
						break;

					default:
						throw new NotSupportedException(string.Format("{0} is not a valid output format.", cmdLine.Format));
				}
			}
			catch (Exception e)
			{
				Log(e, LogLevel.Error);
			}
		}
        private static void WriteOutput(TextWriter writer, DdlWriterCommandLine cmdLine)
        {
            try
            {
                // load the persistent store defined by the current set of binaries
                var store = (PersistentStore)PersistentStoreRegistry.GetDefaultStore();

                // get config

                // run pre-processors
                var preProcessor = new PreProcessor(cmdLine.CreateIndexes, cmdLine.AutoIndexForeignKeys);
                preProcessor.Process(store);


                // if this is an upgrade, load the baseline model file
                RelationalModelInfo baselineModel = null;
                if (!string.IsNullOrEmpty(cmdLine.BaselineModelFile))
                {
                    var serializer = new RelationalModelSerializer();
                    baselineModel = serializer.ReadModel(File.OpenText(cmdLine.BaselineModelFile));
                }

                switch (cmdLine.Format)
                {
                case DdlWriterCommandLine.FormatOptions.sql:

                    // create script writer and set properties based on command line
                    var scriptWriter = new ScriptWriter(store)
                    {
                        Options = new RelationalSchemaOptions
                        {
                            EnumOption                = cmdLine.EnumOption,
                            SuppressForeignKeys       = !cmdLine.CreateForeignKeys,
                            SuppressUniqueConstraints = !cmdLine.CreateUniqueKeys,
                            NamespaceFilter           = new RelationalSchemaOptions.NamespaceFilterOption(cmdLine.Namespace)
                        },
                        QualifyNames  = cmdLine.QualifyNames,
                        BaselineModel = baselineModel
                    };

                    // decide whether to write a creation or upgrade script, depending on if a baseline was supplied
                    if (baselineModel == null)
                    {
                        scriptWriter.WriteCreateScript(writer);
                    }
                    else
                    {
                        scriptWriter.WriteUpgradeScript(writer);
                    }

                    break;

                case DdlWriterCommandLine.FormatOptions.xml:

                    // we don't currently support outputting upgrades in XML format
                    if (baselineModel != null)
                    {
                        throw new NotSupportedException("Upgrade is not compatible with XML output format.");
                    }

                    var serializer          = new RelationalModelSerializer();
                    var relationalModelInfo = new RelationalModelInfo(store, new RelationalSchemaOptions.NamespaceFilterOption(cmdLine.Namespace));
                    serializer.WriteModel(relationalModelInfo, writer);
                    break;

                default:
                    throw new NotSupportedException(string.Format("{0} is not a valid output format.", cmdLine.Format));
                }
            }
            catch (Exception e)
            {
                Log(e, LogLevel.Error);
            }
        }