Exemple #1
0
        public CodeOutput GenerateFakeDbSet()
        {
            var filename = "FakeDbSet" + Settings.FileExtension;

            if (!CanWriteFakeContext())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var data = new FakeDbSetModel
            {
                DbContextClassModifiers = Settings.DbContextClassModifiers,
                DbContextClassIsPartial = Settings.DbContextClassIsPartial(),
                IsEfCore2     = Settings.IsEfCore2(),
                IsEfCore3     = Settings.IsEfCore3(),
                IsEfCore5     = Settings.IsEfCore5(),
                IsEfCore3Plus = Settings.IsEfCore3Plus()
            };

            var co = new CodeOutput(string.Empty, filename, "Fake DbSet", _globalUsings);

            co.AddUsings(_template.FakeDbSetUsings(data));
            co.AddCode(Template.Transform(_template.FakeDbSet(), data));

            return(co);
        }
Exemple #2
0
        public CodeOutput GenerateFakeContext()
        {
            var filename = "Fake" + Settings.DbContextName + Settings.FileExtension;

            if (!CanWriteFakeContext())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var data = new FakeContextModel
            {
                DbContextClassModifiers = Settings.DbContextClassModifiers, DbContextName = Settings.DbContextName, DbContextBaseClass = Settings.DbContextBaseClass,
                contextInterface        = string.IsNullOrWhiteSpace(Settings.DbContextInterfaceName) ? "" : " : " + Settings.DbContextInterfaceName,
                DbContextClassIsPartial = Settings.DbContextClassIsPartial(),
                tables                   = _tables,
                storedProcs              = _storedProcs,
                hasStoredProcs           = _hasStoredProcs,
                tableValuedFunctions     = _tableValuedFunctions,
                scalarValuedFunctions    = _scalarValuedFunctions,
                hasTableValuedFunctions  = _hasTableValuedFunctions && _filter.IncludeTableValuedFunctions,
                hasScalarValuedFunctions = _hasScalarValuedFunctions && _filter.IncludeScalarValuedFunctions,
            };

            var co = new CodeOutput(string.Empty, filename, "Fake Database context", Settings.ContextFolder, _globalUsings);

            co.AddUsings(_template.FakeDatabaseContextUsings(data, _filter));
            co.AddCode(Template.Transform(_template.FakeDatabaseContext(), data));

            return(co);
        }
Exemple #3
0
        public static Generator Create(FileManagementService fileManagementService, Type fileManagerType, string singleDbContextSubNamespace = null)
        {
            Generator generator;

            switch (Settings.GeneratorType)
            {
            case GeneratorType.Ef6:
                generator = new GeneratorEf6(fileManagementService, fileManagerType);
                break;

            case GeneratorType.EfCore:
                generator = new GeneratorEfCore(fileManagementService, fileManagerType);
                break;

            case GeneratorType.Custom:
                generator = new GeneratorCustom(fileManagementService, fileManagerType);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            generator.Init(singleDbContextSubNamespace);
            return(generator);
        }
Exemple #4
0
        public CodeOutput GenerateInterface()
        {
            var filename = Settings.DbContextInterfaceName + Settings.FileExtension;

            if (!CanWriteInterface())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var data = new InterfaceModel
            {
                interfaceModifier             = Settings.DbContextInterfaceModifiers ?? "public partial",
                DbContextInterfaceName        = Settings.DbContextInterfaceName,
                DbContextInterfaceBaseClasses = Settings.DbContextInterfaceBaseClasses,
                DbContextName = Settings.DbContextName,
                tables        = _tables.Where(x => x.DbSetModifier == "public").ToList(),
                AdditionalContextInterfaceItems = Settings.AdditionalContextInterfaceItems.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList(),
                addSaveChanges           = !Settings.UseInheritedBaseInterfaceFunctions,
                storedProcs              = _storedProcs,
                hasStoredProcs           = _hasStoredProcs,
                tableValuedFunctions     = _tableValuedFunctions,
                scalarValuedFunctions    = _scalarValuedFunctions,
                hasTableValuedFunctions  = _hasTableValuedFunctions && _filter.IncludeTableValuedFunctions,
                hasScalarValuedFunctions = _hasScalarValuedFunctions && _filter.IncludeScalarValuedFunctions,
            };

            var co = new CodeOutput(string.Empty, filename, "Database context interface", Settings.InterfaceFolder, _globalUsings);

            co.AddUsings(_template.DatabaseContextInterfaceUsings(data));
            co.AddCode(Template.Transform(_template.DatabaseContextInterface(), data));

            return(co);
        }
Exemple #5
0
        public void OneTimeSetUp()
        {
            var fileManagement = new FileManagementService(new GeneratedTextTransformation());
            var databaseReader = new FakeDatabaseReader();

            _rawTables = new List <RawTable>();
            _sut       = new GeneratorCustom(fileManagement, typeof(NullFileManager));
            _sut.Init(databaseReader, string.Empty);
        }
        public static void initialize()
        {
            session = new Teamcenter.ClientX.Session(serverHost);

            dmService = DataManagementService.getService(Teamcenter.ClientX.Session.getConnection());
            //prefService = PreferenceManagementService.getService(Session.getConnection());
            sessionService = SessionService.getService(Teamcenter.ClientX.Session.getConnection());
            queryService   = SavedQueryService.getService(Teamcenter.ClientX.Session.getConnection());
            fileMgtService = FileManagementService.getService(Teamcenter.ClientX.Session.getConnection());
        }
        public static Generator Create(FileManagementService fileManagementService, Type fileManagerType, string singleDbContextSubNamespace = null)
        {
            Generator generator;

            switch (Settings.GeneratorType)
            {
            case GeneratorType.Ef6:
                generator = new GeneratorEf6(fileManagementService, fileManagerType);
                break;

            case GeneratorType.EfCore:
                generator = new GeneratorEfCore(fileManagementService, fileManagerType);
                break;

            case GeneratorType.Custom:
                generator = new GeneratorCustom(fileManagementService, fileManagerType);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            var providerName = "unknown";

            try
            {
                providerName = DatabaseProvider.GetProvider(Settings.DatabaseType);
                var factory        = DbProviderFactories.GetFactory(providerName);
                var databaseReader = DatabaseReaderFactory.Create(factory);
                generator.Init(databaseReader, singleDbContextSubNamespace);
                return(generator);
            }
            catch (Exception x)
            {
                var error = x.Message.Replace("\r\n", "\n").Replace("\n", " ");
                Console.WriteLine(error);

                fileManagementService.Error(generator.GetPreHeaderInfo());
                fileManagementService.Error(string.Empty);
                fileManagementService.Error("// ------------------------------------------------------------------------------------------------");
                fileManagementService.Error(string.Format("// WARNING: Failed to load provider \"{0}\" - {1}", providerName, error));
                fileManagementService.Error("// Allowed providers:");
                foreach (DataRow fc in DbProviderFactories.GetFactoryClasses().Rows)
                {
                    var s = string.Format("//    \"{0}\"", fc[2]);
                    fileManagementService.Error(s);
                }
                fileManagementService.Error(string.Empty);
                fileManagementService.Error("/*" + x.StackTrace + "*/");
                fileManagementService.Error("// ------------------------------------------------------------------------------------------------");
                fileManagementService.Error(string.Empty);
            }

            return(null);
        }
Exemple #8
0
 public FileContentProvider(HttpContext context, string[] searchPatterns, string[] viewPaths, string[] uploadPaths, string[] deletePaths, string selectedUrl, string selectedItemTag)
     : base(context, searchPatterns, viewPaths, uploadPaths, deletePaths, selectedUrl, selectedItemTag)
 {
     this.dataServer      = new BusinessLogicalService(System.Configuration.ConfigurationManager.ConnectionStrings["TelerikConnectionString"].ConnectionString);
     this.fileService     = new FileManagementService(System.Configuration.ConfigurationManager.ConnectionStrings["TelerikConnectionString"].ConnectionString);
     this.itemHandlerPath = System.Configuration.ConfigurationManager.AppSettings["Telerik.FileApp.ItemHandler"];
     if (itemHandlerPath.StartsWith("~/"))
     {
         itemHandlerPath = HttpContext.Current.Request.ApplicationPath.TrimEnd('/') + itemHandlerPath.Substring(1);
     }
 }
Exemple #9
0
        public void Ef6ModelBuilder()
        {
            // Arrange
            var fileManagement = new FileManagementService(new GeneratedTextTransformation());
            var sut            = new GeneratorEf6(fileManagement, typeof(NullFileManager));

            // Act
            var list = new List <string>();

            foreach (var column in _orderDetails.Columns)
            {
                var s = sut.IndexModelBuilder(column);
                list.Add(s);
                Console.WriteLine(s);
            }

            // Assert
            Assert.AreEqual(3, list.Count);

            Assert.AreEqual(@"modelBuilder.Entity<OrderDetails>()
            .Property(e => e.OrderID)
            .HasColumnAnnotation(
                IndexAnnotation.AnnotationName,
                new IndexAnnotation(new[]
                {
                    new IndexAttribute(""OrderID"", 1),
                    new IndexAttribute(""OrdersOrder_Details"", 1),
                    new IndexAttribute(""PK_Order_Details"", 1) { IsUnique = true, IsClustered = true }
                }));", list[0].Trim());

            Assert.AreEqual(@"modelBuilder.Entity<OrderDetails>()
            .Property(e => e.ProductID)
            .HasColumnAnnotation(
                IndexAnnotation.AnnotationName,
                new IndexAnnotation(new[]
                {
                    new IndexAttribute(""PK_Order_Details"", 2) { IsUnique = true, IsClustered = true },
                    new IndexAttribute(""ProductID"", 1),
                    new IndexAttribute(""ProductsOrder_Details"", 1)
                }));", list[1].Trim());

            Assert.AreEqual(@"modelBuilder.Entity<OrderDetails>()
            .Property(e => e.test)
            .HasColumnAnnotation(
                IndexAnnotation.AnnotationName,
                new IndexAnnotation(new IndexAttribute(""PK_test"", 1) { IsUnique = true, IsClustered = true })
            );", list[2].Trim());
        }
        public CodeOutput GenerateEnum(Enumeration enumeration)
        {
            var filename = enumeration.EnumName + Settings.FileExtension;

            if (!CanWriteEnums())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var co = new CodeOutput(enumeration.EnumName, filename, null, null);

            co.AddUsings(_template.EnumUsings());
            co.AddCode(Template.Transform(_template.Enums(), enumeration));
            return(co);
        }
Exemple #11
0
        public UploadDownloadFsc3(User user)
        {
//            String[] FMS_Bootstrap_Urls = new string[] { host };
//            String cacheDir = "c:\\work\\";

            dservice          = DataManagementService.getService(PDMConnection.ClientX.Session.getConnection());
            fmservice         = FileManagementService.getService(PDMConnection.ClientX.Session.getConnection());
            fmsFileManagement = new FileManagementUtility(PDMConnection.ClientX.Session.getConnection(), null, null, new[] { "" }, "C:\\WORK\\");

            try {
                homeFolder = user.Home_folder;
            } catch (NotLoadedException e) {
                Console.WriteLine(e.StackTrace);
            }

            setObjectPolicy();
        }
Exemple #12
0
        public void EfCoreModelBuilder()
        {
            // Arrange
            var fileManagement = new FileManagementService(new GeneratedTextTransformation());
            var sut            = new GeneratorEfCore(fileManagement, typeof(NullFileManager));

            // Act
            var list = sut.IndexModelBuilder(_orderDetails);

            foreach (var str in list)
            {
                Console.WriteLine(str);
            }

            // Assert
            Assert.AreEqual(4, list.Count);

            Assert.AreEqual(@"builder.HasIndex(x => x.OrderID).HasName(""OrderID"");", list[0]);
            Assert.AreEqual(@"builder.HasIndex(x => x.OrderID).HasName(""OrdersOrder_Details"");", list[1]);
            Assert.AreEqual(@"builder.HasIndex(x => x.ProductID).HasName(""ProductID"");", list[2]);
            Assert.AreEqual(@"builder.HasIndex(x => x.ProductID).HasName(""ProductsOrder_Details"");", list[3]);
        }
        public CodeOutput GenerateFactory()
        {
            var filename = Settings.DbContextName + "Factory" + Settings.FileExtension;

            if (!CanWriteFactory())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var data = new FactoryModel
            {
                classModifier = Settings.DbContextClassModifiers,
                contextName   = Settings.DbContextName
            };

            var co = new CodeOutput(string.Empty, filename, "Database context factory", _globalUsings);

            co.AddUsings(_template.DatabaseContextFactoryUsings(data));
            co.AddCode(Template.Transform(_template.DatabaseContextFactory(), data));
            return(co);
        }
        public CodeOutput GenerateStoredProcReturnModel(StoredProcedure sp)
        {
            var filename = sp.WriteStoredProcReturnModelName(_filter) + Settings.FileExtension;

            if (!CanWriteStoredProcReturnModel())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var multipleModelReturnColumns = new List <MultipleModelReturnColumns>();
            var model = 0;

            foreach (var returnModel in sp.ReturnModels)
            {
                multipleModelReturnColumns.Add(new MultipleModelReturnColumns(++model, returnModel.Select(sp.WriteStoredProcReturnColumn).ToList()));
            }

            var data = new StoredProcReturnModel
            {
                ResultClassModifiers           = Settings.ResultClassModifiers,
                WriteStoredProcReturnModelName = sp.WriteStoredProcReturnModelName(_filter),
                SingleModel = sp.ReturnModels.Count == 1,
                SingleModelReturnColumns = sp.ReturnModels
                                           .First()
                                           .Select(sp.WriteStoredProcReturnColumn)
                                           .ToList(),
                MultipleModelReturnColumns = multipleModelReturnColumns
            };

            var co = new CodeOutput(sp.DbName, filename, null, _globalUsings);

            co.AddUsings(_template.StoredProcReturnModelUsings());
            co.AddCode(Template.Transform(_template.StoredProcReturnModels(), data));
            return(co);
        }
        public CodeOutput GeneratePocoConfiguration(Table table)
        {
            var filename = table.NameHumanCaseWithSuffix() + Settings.ConfigurationClassName + Settings.FileExtension;

            if (!CanWritePocoConfiguration())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var columns = table.Columns
                          .Where(x => !x.Hidden && !string.IsNullOrEmpty(x.Config))
                          .OrderBy(x => x.Ordinal)
                          .ToList();

            var isEfCore3Plus = Settings.IsEfCore3Plus();

            var foreignKeys = columns.SelectMany(x => x.ConfigFk).OrderBy(o => o).ToList();
            var primaryKey  = _generator.PrimaryKeyModelBuilder(table);

            var indexes    = _generator.IndexModelBuilder(table);
            var hasIndexes = indexes != null && indexes.Any();

            var data = new PocoConfigurationModel
            {
                UseHasNoKey               = isEfCore3Plus && table.IsView && !table.HasPrimaryKey,
                Name                      = table.DbName,
                ToTableOrView             = (isEfCore3Plus && table.IsView && !table.HasPrimaryKey) ? "ToView" : "ToTable",
                ConfigurationClassName    = table.NameHumanCaseWithSuffix() + Settings.ConfigurationClassName,
                NameHumanCaseWithSuffix   = table.NameHumanCaseWithSuffix(),
                Schema                    = table.Schema.DbName,
                PrimaryKeyNameHumanCase   = primaryKey ?? table.PrimaryKeyNameHumanCase(),
                HasSchema                 = !string.IsNullOrEmpty(table.Schema.DbName),
                ClassModifier             = Settings.ConfigurationClassesModifiers,
                ClassComment              = table.WriteComments(),
                Columns                   = columns.Select(x => x.Config).ToList(),
                HasReverseNavigation      = table.ReverseNavigationProperty.Count > 0,
                ReverseNavigationProperty = table.ReverseNavigationProperty
                                            .OrderBy(x => x.Definition)
                                            .Select(x => new PocoReverseNavigationPropertyModel
                {
                    ReverseNavHasComment = Settings.IncludeComments != CommentsStyle.None && !string.IsNullOrEmpty(x.Comments),
                    ReverseNavComment    = Settings.IncludeComments != CommentsStyle.None ? x.Comments : string.Empty,
                    AdditionalReverseNavigationsDataAnnotations = Settings.AdditionalReverseNavigationsDataAnnotations,
                    AdditionalDataAnnotations = x.AdditionalDataAnnotations,
                    Definition = x.Definition
                })
                                            .ToList(),

                HasForeignKey                  = foreignKeys.Any(),
                ForeignKeys                    = foreignKeys,
                MappingConfiguration           = table.MappingConfiguration,
                ConfigurationClassesArePartial = Settings.ConfigurationClassesArePartial(),
                Indexes    = indexes,
                HasIndexes = hasIndexes
            };

            var co = new CodeOutput(table.DbName, filename, null, _globalUsings);

            co.AddUsings(_template.PocoConfigurationUsings(data));
            co.AddCode(Template.Transform(_template.PocoConfiguration(), data));
            return(co);
        }
        public CodeOutput GeneratePoco(Table table)
        {
            var filename = table.NameHumanCaseWithSuffix() + Settings.FileExtension;

            if (!CanWritePoco())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var isEfCore3Plus = Settings.IsEfCore3Plus();

            var data = new PocoModel
            {
                UseHasNoKey             = isEfCore3Plus && table.IsView && !table.HasPrimaryKey,
                HasNoPrimaryKey         = !table.HasPrimaryKey,
                Name                    = table.DbName,
                NameHumanCaseWithSuffix = table.NameHumanCaseWithSuffix(),
                ClassModifier           = Settings.EntityClassesModifiers,
                ClassComment            = table.WriteComments(),
                ExtendedComments        = table.WriteExtendedComments(),
                ClassAttributes         = table.WriteClassAttributes(),
                BaseClasses             = table.BaseClasses,
                InsideClassBody         = Settings.WriteInsideClassBody(table),
                Columns                 = table.Columns
                                          .Where(x => !x.Hidden && !x.ExistsInBaseClass)
                                          .OrderBy(x => x.Ordinal)
                                          .Select((col, index) => new PocoColumnModel
                {
                    AddNewLineBefore   = index > 0 && (((Settings.IncludeExtendedPropertyComments == CommentsStyle.InSummaryBlock || Settings.IncludeComments == CommentsStyle.InSummaryBlock) && !string.IsNullOrEmpty(col.SummaryComments)) || (col.Attributes != null && col.Attributes.Any())),
                    HasSummaryComments = (Settings.IncludeExtendedPropertyComments == CommentsStyle.InSummaryBlock || Settings.IncludeComments == CommentsStyle.InSummaryBlock) && !string.IsNullOrEmpty(col.SummaryComments),
                    SummaryComments    = !string.IsNullOrEmpty(col.SummaryComments) ? SecurityElement.Escape(col.SummaryComments) : null,
                    Attributes         = col.Attributes,
                    OverrideModifier   = col.OverrideModifier,
                    WrapIfNullable     = col.WrapIfNullable(),
                    NameHumanCase      = col.NameHumanCase,
                    PrivateSetterForComputedColumns = Settings.UsePrivateSetterForComputedColumns && col.IsComputed ? "private " : string.Empty,
                    PropertyInitialisers            = Settings.UsePropertyInitialisers ? (string.IsNullOrWhiteSpace(col.Default) ? string.Empty : string.Format(" = {0};", col.Default)) : string.Empty,
                    InlineComments = col.InlineComments
                })
                                          .ToList(),
                HasReverseNavigation      = table.ReverseNavigationProperty.Count > 0,
                ReverseNavigationProperty = table.ReverseNavigationProperty
                                            .OrderBy(x => x.Definition)
                                            .Select(x => new PocoReverseNavigationPropertyModel
                {
                    ReverseNavHasComment = Settings.IncludeComments != CommentsStyle.None && !string.IsNullOrEmpty(x.Comments),
                    ReverseNavComment    = Settings.IncludeComments != CommentsStyle.None ? x.Comments : string.Empty,
                    AdditionalReverseNavigationsDataAnnotations = Settings.AdditionalReverseNavigationsDataAnnotations,
                    AdditionalDataAnnotations = x.AdditionalDataAnnotations,
                    Definition = x.Definition
                })
                                            .ToList(),
                HasForeignKey          = table.HasForeignKey,
                ForeignKeyTitleComment = Settings.IncludeComments != CommentsStyle.None && table.Columns.SelectMany(x => x.EntityFk).Any() ? "    // Foreign keys" + Environment.NewLine : string.Empty,
                ForeignKeys            = table.Columns
                                         .SelectMany(x => x.EntityFk)
                                         .OrderBy(o => o.Definition)
                                         .Select(x => new PocoForeignKeyModel
                {
                    HasFkComment = Settings.IncludeComments != CommentsStyle.None && !string.IsNullOrEmpty(x.Comments),
                    FkComment    = x.Comments,
                    AdditionalForeignKeysDataAnnotations = Settings.AdditionalForeignKeysDataAnnotations,
                    AdditionalDataAnnotations            = x.AdditionalDataAnnotations,
                    Definition = x.Definition
                })
                                         .ToList(),
                CreateConstructor = !Settings.UsePropertyInitialisers &&
                                    (
                    table.Columns.Any(c => c.Default != string.Empty && !c.Hidden) ||
                    table.ReverseNavigationCtor.Any() ||
                    Settings.EntityClassesArePartial()
                                    ),
                ColumnsWithDefaults = table.Columns
                                      .Where(c => c.Default != string.Empty && !c.Hidden && Settings.IncludeColumnsWithDefaults)
                                      .OrderBy(x => x.Ordinal)
                                      .Select(x => new PocoColumnsWithDefaultsModel {
                    NameHumanCase = x.NameHumanCase, Default = x.Default
                })
                                      .ToList(),
                ReverseNavigationCtor   = table.ReverseNavigationCtor,
                EntityClassesArePartial = Settings.EntityClassesArePartial()
            };

            var co = new CodeOutput(table.DbName, filename, null, _globalUsings);

            co.AddUsings(_template.PocoUsings(data));
            co.AddCode(Template.Transform(_template.Poco(), data));
            return(co);
        }
        public CodeOutput GenerateContext()
        {
            var filename = Settings.DbContextName + Settings.FileExtension;

            if (!CanWriteContext())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var indexes         = new List <string>();
            var hasSpatialTypes = false;

            foreach (var table in _tables)
            {
                var columns = table.Table.Columns
                              .Where(x => !x.Hidden && !string.IsNullOrEmpty(x.Config))
                              .OrderBy(x => x.Ordinal)
                              .ToList();

                if (!Settings.DisableGeographyTypes && !hasSpatialTypes)
                {
                    hasSpatialTypes = columns.Any(x => x.IsSpatial);
                }

                indexes.AddRange(columns
                                 .Select(_generator.IndexModelBuilder)
                                 .Where(x => !string.IsNullOrWhiteSpace(x)));
            }

            var isEfCore3Plus = Settings.IsEfCore3Plus();

            var data = new ContextModel
            {
                DbContextClassModifiers = Settings.DbContextClassModifiers,
                DbContextName           = Settings.DbContextName,
                DbContextBaseClass      = Settings.DbContextBaseClass,
                AddParameterlessConstructorToDbContext = Settings.AddParameterlessConstructorToDbContext,
                HasDefaultConstructorArgument          = !string.IsNullOrEmpty(Settings.DefaultConstructorArgument),
                DefaultConstructorArgument             = Settings.DefaultConstructorArgument,
                ConfigurationClassName  = Settings.ConfigurationClassName,
                ConnectionString        = Settings.ConnectionString,
                ConnectionStringName    = Settings.ConnectionStringName,
                ConnectionStringActions = hasSpatialTypes && Settings.TemplateType != TemplateType.Ef6 ? ", x => x.UseNetTopologySuite()" : "",
                contextInterface        = string.IsNullOrWhiteSpace(Settings.DbContextInterfaceName) ? "" : ", " + Settings.DbContextInterfaceName,
                setInitializer          = string.Format("<{0}>(null);", Settings.DbContextName),
                DbContextClassIsPartial = Settings.DbContextClassIsPartial(),
                SqlCe          = Settings.DatabaseType == DatabaseType.SqlCe,
                tables         = _tables,
                hasTables      = _hasTables,
                indexes        = indexes,
                hasIndexes     = indexes.Any(),
                storedProcs    = _storedProcs,
                hasStoredProcs = _hasStoredProcs,
                tableValuedFunctionComplexTypes    = _tableValuedFunctionComplexTypes,
                hasTableValuedFunctionComplexTypes = _hasTableValuedFunctionComplexTypes,
                AdditionalContextInterfaceItems    = Settings.AdditionalContextInterfaceItems.Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList(),
                addSaveChanges                  = !Settings.UseInheritedBaseInterfaceFunctions,
                tableValuedFunctions            = _tableValuedFunctions,
                scalarValuedFunctions           = _scalarValuedFunctions,
                Sequences                       = _filter.Sequences,
                hasSequences                    = _filter.Sequences.Any(),
                hasTableValuedFunctions         = _hasTableValuedFunctions && _filter.IncludeTableValuedFunctions,
                hasScalarValuedFunctions        = _hasScalarValuedFunctions && _filter.IncludeScalarValuedFunctions,
                IncludeObjectContextConstructor = !Settings.DbContextBaseClass.Contains("IdentityDbContext"),
                QueryString                     = isEfCore3Plus ? "Set"           : "Query",
                FromSql                             = isEfCore3Plus ? "FromSqlRaw"    : "FromSql",
                ExecuteSqlCommand                   = isEfCore3Plus ? "ExecuteSqlRaw" : "ExecuteSqlCommand",
                StoredProcModelBuilderCommand       = isEfCore3Plus ? "Entity"        : "Query",
                StoredProcModelBuilderPostCommand   = isEfCore3Plus ? ".HasNoKey()"   : string.Empty,
                OnConfigurationUsesConfiguration    = Settings.OnConfiguration == OnConfiguration.Configuration,
                OnConfigurationUsesConnectionString = Settings.OnConfiguration == OnConfiguration.ConnectionString,
                DefaultSchema                       = Settings.DefaultSchema,
                UseDatabaseProvider                 = Settings.DatabaseProvider(),
                SqlParameter                        = Settings.SqlParameter(),
            };

            var co = new CodeOutput(string.Empty, filename, "Database context", _globalUsings);

            co.AddUsings(_template.DatabaseContextUsings(data));
            co.AddCode(Template.Transform(_template.DatabaseContext(), data));

            return(co);
        }
        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);
        }
        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);
        }
Exemple #20
0
 public GeneratorEf6(FileManagementService fileManagementService, Type fileManagerType)
     : base(fileManagementService, fileManagerType)
 {
 }
Exemple #21
0
 public PayrollController(FileManagementService fileManagementService) =>