コード例 #1
0
        static void Main(string[] args)
        {
            var collector = new SqlServerMetadataCollector();

            //			collector.LoadMetadata("Server=10.66.95.246;database=GESJobDB2;User ID=EaiDbUser;Password=JdMdL..8576");
            collector.LoadMetadata("Server=10.66.95.210;database=GESJobDB;User ID=EaiDbUser;Password=JdMdL..0494");

            var flattener = new CollectThingsVisitor();

            collector.Model.Accept(flattener);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: riverdarda/DataTools
        private static void Main(string[] args)
        {
            string[] tables = null;
            string   dataObjectOutputDirectory = null;
            string   pocoOutputDirectory       = null;
            string   adapterOutputDirectory    = null;
            var      showUsing = false;

            string databaseServer   = null;
            string databaseUsername = null;
            string databasePassword = null;
            string databaseName     = null;
            string connectionString = null;

            var schemaCollector = new SqlServerMetadataCollector();
            var generator       = new SqlServerModelGenerator(schemaCollector);

            var options = new OptionSet
            {
                { "tables=", "Comma separated list of tables to generate", (string p) => tables = p.Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries) },
                { "tablePattern=", "Regular expression to match table names", p => generator.IncludeTablePattern = p },
                { "p|partial", "Generate partial DataObject classes", p => generator.GeneratePartialClasses = true },
                { "nodc|noDataContext", "Do not generate data context class", p => generator.GenerateDataContextClass = false },
                { "dcb=|dataContextBase=", "Base class for the data context", p => generator.BaseDataContextClass = p },
                { "dc=|dataContext=", "Data context class name. Default is 'DataContext'", p => generator.DataContextName = p },
                { "server=", "Database server", p => databaseServer = p },
                { "user="******"Database username", p => databaseUsername = p },
                { "password="******"Database password", p => databasePassword = p },
                { "database=", "Database name", p => databaseName = p },
                { "connect=", "Database server onnection string", p => connectionString = p },
                { "dons=", "Namespace for generated DataObject classes", p => generator.DataNamespace = p },
                { "pocons=", "Namespace for generated POCO classes", p => generator.PocoNamespace = p },
                { "adapterns=", "Namespace for generated adapter classes (defaults to DataObject ns)", p => generator.AdapterNamespace = p },
                { "dosuffix=", "DataObject class suffix (defaults to 'Data')", p => generator.DataObjectSuffix = p },
                { "pocosuffix=", "POCO class suffix (defaults to no suffix)", p => generator.PocoSuffix = p },
                { "adaptersuffix=", "Adapter class suffix (defaults to 'Adapter')", p => generator.AdapterSuffix = p },
                { "s", "Singularize class names", p => generator.SingularizeClassNames = true },
                { "fk", "Enable generation of foreign key associations (incomplete!)", p => generator.RenderForeignKeys = true },
                { "poco", "Generate POCOs", p => generator.GeneratePocos = true },
                { "adapter", "Generate DataObject <-> POCO adapters", p => generator.GenerateAdapters = true },
                { "do", "Generate DataObjects", p => generator.GenerateDataObjects = true },
                { "dodir=", "Generated DataObject output directory", p => dataObjectOutputDirectory = p },
                { "pocodir=", "Generated POCO output directory", p => pocoOutputDirectory = p },
                { "adapterdir=", "Generated DataObject output directory", p => adapterOutputDirectory = p },
                { "pascal", "Use Pascal casing for type and member names", p => generator.UsePascalCasing = true },
                { "help", "Show Help", _ => showUsing = true }
            };

            var remainingOptions = options.Parse();

            if (showUsing)
            {
                Using(options);
            }

            if (remainingOptions.Count != 0)
            {
                Console.WriteLine("Unrecognized options");
                foreach (var opt in remainingOptions)
                {
                    Console.WriteLine(opt);
                }
                Using(options);
            }

            if (dataObjectOutputDirectory.IsNullOrEmpty())
            {
                dataObjectOutputDirectory = Directory.GetCurrentDirectory();
            }

            if (pocoOutputDirectory.IsNullOrEmpty())
            {
                pocoOutputDirectory = Directory.GetCurrentDirectory();
            }

            if (adapterOutputDirectory.IsNullOrEmpty())
            {
                adapterOutputDirectory = Directory.GetCurrentDirectory();
            }

            if (!Directory.Exists(dataObjectOutputDirectory))
            {
                Directory.CreateDirectory(dataObjectOutputDirectory);
            }

            if (!Directory.Exists(pocoOutputDirectory))
            {
                Directory.CreateDirectory(pocoOutputDirectory);
            }

            if (!Directory.Exists(adapterOutputDirectory))
            {
                Directory.CreateDirectory(adapterOutputDirectory);
            }

            if (tables != null)
            {
                generator.IncludeTables = tables.ToList();
            }

            if (connectionString.NotNullOrEmpty())
            {
                schemaCollector.LoadMetadata(connectionString);
            }
            else if (databaseServer.NotNullOrEmpty() &&
                     databaseName.NotNullOrEmpty() &&
                     databasePassword.NotNullOrEmpty() &&
                     databaseUsername.NotNullOrEmpty())
            {
                schemaCollector.LoadMetadata(databaseServer, databaseName, databaseUsername, databasePassword);
            }
            else
            {
                Console.WriteLine("Error: no valid database server connection information provided.");
                return;
            }


            var results = generator.Generate(schemaCollector.Model);

            if (results == null)
            {
                Console.WriteLine("No data model generated");
                return;
            }

            if (generator.GenerateDataContextClass &&
                results.DataContextMainPart.NotNullOrEmpty())
            {
                File.WriteAllText(Path.Combine(dataObjectOutputDirectory, generator.DataContextName + ".cs"), results.DataContextMainPart);
                if (results.DataContextProcedurePart.NotNullOrEmpty())
                {
                    File.WriteAllText(Path.Combine(dataObjectOutputDirectory, generator.DataContextName + ".Procedures.cs"), results.DataContextProcedurePart);
                }
            }

            foreach (var model in results.Models)
            {
                string outputDirectory = null;
                if (model.Type == CodeType.Adapter)
                {
                    outputDirectory = adapterOutputDirectory;
                }
                else if (model.Type == CodeType.DataObject)
                {
                    outputDirectory = dataObjectOutputDirectory;
                }
                else if (model.Type == CodeType.Poco)
                {
                    outputDirectory = pocoOutputDirectory;
                }
                else
                {
                    Console.WriteLine($"Invalid model type for model {model.Name}");
                    continue;
                }

                File.WriteAllText(Path.Combine(outputDirectory, model.Name + ".cs"), model.Content);
            }
        }