public void ProcessToAnotherFileManager(IFileManager fileManager, GeneratedTextTransformation outer)
        {
            AddCurrentBlock();

            foreach (var fileBlock in _blocks)
            {
                fileManager.StartNewFile(fileBlock.Filename);
                outer.WriteLine(fileBlock.Text);
                fileManager.EndBlock();
            }
        }
        public FileManagementService(GeneratedTextTransformation outer)
        {
            if (outer == null)
            {
                throw new ArgumentNullException(nameof(outer));
            }

            _outer                   = outer;
            _fileManagers            = new Dictionary <string, IFileManager>();
            _fileManager             = null;
            _visualStudioFileManager = null;
        }
        public void Run(string filename, string singleDbContextSubNamespace, Type fileManagerType, string subFolder)
        {
            Inflector.PluralisationService   = new EnglishPluralizationService();
            Settings.GenerateSingleDbContext = true;

            var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            if (!string.IsNullOrEmpty(subFolder))
            {
                path = Path.Combine(path, subFolder);
            }
            Settings.Root = path;
            var fullPath = Path.Combine(path, $"{filename}_{Settings.DatabaseType}_{Settings.TemplateType}_Fk{Settings.ForeignKeyNamingStrategy}.cs");

            // Delete old generated files
            if (File.Exists(fullPath))
            {
                File.Delete(fullPath);
            }
            if (!string.IsNullOrEmpty(subFolder))
            {
                foreach (var old in Directory.GetFiles(Settings.Root))
                {
                    File.Delete(old);
                }
            }

            var outer          = new GeneratedTextTransformation();
            var fileManagement = new FileManagementService(outer);
            var generator      = GeneratorFactory.Create(fileManagement, fileManagerType, singleDbContextSubNamespace);

            // Turn on everything for testing
            Assert.IsNotNull(generator);
            Assert.IsNotNull(generator.FilterList);
            var filters = generator.FilterList.GetFilters();

            Assert.IsNotNull(filters);
            foreach (var filter in filters)
            {
                filter.Value.IncludeViews                 = true;
                filter.Value.IncludeSynonyms              = true;
                filter.Value.IncludeStoredProcedures      = true;
                filter.Value.IncludeTableValuedFunctions  = true;
                filter.Value.IncludeScalarValuedFunctions = true;
            }

            var stopwatch          = new Stopwatch();
            var stopwatchGenerator = new Stopwatch();

            stopwatch.Start();
            generator.ReadDatabase();

            stopwatchGenerator.Start();
            generator.GenerateCode();
            stopwatchGenerator.Stop();

            stopwatch.Stop();

            Console.WriteLine("Duration: {0:F1} seconds, Generator {1:F1} seconds", stopwatch.ElapsedMilliseconds / 1000.0, stopwatchGenerator.ElapsedMilliseconds / 1000.0);
            Console.WriteLine($"Writing to {fullPath}");
            Console.WriteLine();

            if (outer.FileData.Length > 0)
            {
                using (var sw = new StreamWriter(fullPath))
                {
                    sw.Write(outer.FileData.ToString());
                }
            }

            fileManagement.Process(true);
        }
コード例 #4
0
 public EFCore2ModelGenerator(GeneratedTextTransformation host) : base(host)
 {
 }
 public void Init(GeneratedTextTransformation textTransformation)
 {
     throw new NotImplementedException();
 }
        public void Run(string filename, Type fileManagerType, string subFolder)
        {
            Inflector.PluralisationService = new EnglishPluralizationService();

            var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            if (!string.IsNullOrEmpty(subFolder))
            {
                path = Path.Combine(path, subFolder);
            }
            Settings.Root = path;

            var outer          = new GeneratedTextTransformation();
            var fileManagement = new FileManagementService(outer);
            var generator      = GeneratorFactory.Create(fileManagement, fileManagerType);

            Assert.IsNotNull(generator);

            List <MultiContextSettings> multiDbSettings;

            if (string.IsNullOrWhiteSpace(Settings.MultiContextSettingsPlugin))
            {
                multiDbSettings = generator.FilterList.GetMultiContextSettings();
            }
            else
            {
                var plugin = (IMultiContextSettingsPlugin)AssemblyHelper.LoadPlugin(Settings.MultiContextSettingsPlugin);
                multiDbSettings = plugin.ReadSettings();
            }
            Assert.IsNotNull(multiDbSettings);

            var filters = generator.FilterList.GetFilters();

            Assert.IsNotNull(filters);
            var keys = filters.Select(x => x.Key).ToArray();

            _generatedFileNames = keys.Select(x => $"{filename}_{Settings.DatabaseType}_{Settings.TemplateType}_{x}.cs").ToArray();
            _generatedFullPaths = _generatedFileNames.Select(x => Path.Combine(path, x)).ToArray();

            // Set the fileManager to generate these filenames for testing
            for (var n = 0; n < keys.Length; n++)
            {
                fileManagement.UseFileManager(keys[n]);
                fileManagement.StartNewFile(_generatedFileNames[n]);
            }

            // Delete old generated files
            foreach (var fullPath in _generatedFullPaths)
            {
                Console.WriteLine($"Deleting   {fullPath}");
                if (File.Exists(fullPath))
                {
                    File.Delete(fullPath);
                }
            }

            if (!string.IsNullOrEmpty(subFolder))
            {
                foreach (var old in Directory.GetFiles(Settings.Root))
                {
                    File.Delete(old);
                }
            }

            // Turn on everything for testing
            foreach (var filter in generator.FilterList.GetFilters())
            {
                filter.Value.IncludeViews                 = true;
                filter.Value.IncludeSynonyms              = true;
                filter.Value.IncludeStoredProcedures      = true;
                filter.Value.IncludeTableValuedFunctions  = true;
                filter.Value.IncludeScalarValuedFunctions = true;
            }

            var stopwatch          = new Stopwatch();
            var stopwatchGenerator = new Stopwatch();

            stopwatch.Start();
            generator.ReadDatabase();

            stopwatchGenerator.Start();
            generator.GenerateCode();
            stopwatchGenerator.Stop();

            stopwatch.Stop();

            Console.WriteLine("Duration: {0:F1} seconds, Generator {1:F1} seconds", stopwatch.ElapsedMilliseconds / 1000.0, stopwatchGenerator.ElapsedMilliseconds / 1000.0);
            foreach (var file in _generatedFullPaths)
            {
                Console.WriteLine($"Writing to {file}");
            }
            Console.WriteLine();

            if (outer.FileData.Length > 0 && _generatedFullPaths.Length == 1)
            {
                using (var sw = new StreamWriter(_generatedFullPaths[0]))
                {
                    sw.Write(outer.FileData.ToString());
                }
            }

            fileManagement.Process(true);
        }
 public void Init(GeneratedTextTransformation textTransformation)
 {
 }
 public void Init(GeneratedTextTransformation textTransformation)
 {
     _wrapped = EntityFrameworkTemplateFileManager.Create(textTransformation);
 }