예제 #1
0
        public ScaffoldingDto ScaffoldDatabase(string connectionString, string rootNamespace, string contextName)
        {
            var scaffUtils           = new ScaffoldingUtilities();
            var csharpUtils          = new CSharpUtilities();
            var provider             = new SqlServerAnnotationProvider();
            var customConfiguration  = new CustomConfiguration(connectionString, contextName, rootNamespace, true);
            var entityTypeWriter     = new EntityTypeWriter(csharpUtils);
            var dbContextWriter      = new SingularDbContextWriter(scaffUtils, csharpUtils);
            var configurationFactory = new ConfigurationFactory(provider, csharpUtils, scaffUtils);
            var loggerFactory        = new LoggerFactory();
            var logger        = loggerFactory.CreateLogger <SqlServerDatabaseModelFactory>();
            var revEngeConfig = new ReverseEngineeringConfiguration {
                ConnectionString = connectionString
            };
            var sqlScaffoldModelFactory = new SingularScaffoldingModelFactory(new LoggerFactory(),
                                                                              new SqlServerTypeMapper(), new SqlServerDatabaseModelFactory(logger), new CandidateNamingService());
            var codeWriter = new StringBuilderCodeWriter(new FileSystemFileService(), dbContextWriter, entityTypeWriter);

            var generator          = new ReverseEngineeringGenerator(sqlScaffoldModelFactory, configurationFactory, codeWriter);
            var metaModel          = generator.GetMetadataModel(revEngeConfig);
            var modelConfiguration = configurationFactory.CreateModelConfiguration(metaModel, customConfiguration);
            var dbContextData      = dbContextWriter.WriteCode(modelConfiguration);
            var scaffoldingDto     = new ScaffoldingDto
            {
                DbContextSource = dbContextData,
                ModelSources    = modelConfiguration.EntityConfigurations
                                  .Select(entityConfiguration => entityTypeWriter.WriteCode(entityConfiguration))
                                  .ToImmutableList()
            };

            return(scaffoldingDto);
        }
예제 #2
0
        public static void CompileExpression(IFunctionBuilder functionBuilder, IFunctionData data, string parameterName, string expressionName)
        {
            var propertyValue    = data.Properties[parameterName].Value;
            var expressionString = (propertyValue is string) ? propertyValue as string : string.Empty;

            SqlStringHandler stringHandler = SqlStringHandler.GetSqlStringHandler(expressionString);

            var parameterValues = new string[stringHandler.Expressions.Count];

            for (int i = 0; i < parameterValues.Length; i++)
            {
                parameterValues[i] = functionBuilder.GetParamName(expressionName + i) + ".ToString()";
            }

            if (parameterValues.Length > 0)
            {
                functionBuilder.AddCode(string.Format(@"{0} = Twenty57.Linx.Components.Database.Mongo.MongoStringHandler.GetExecutableQuery(
					{0},
					{1},
					new [] {{ {2} }});"                    ,
                                                      functionBuilder.GetParamName(parameterName),
                                                      CSharpUtilities.ArrayAsString(stringHandler.Expressions.Select(x => x.MatchText)),
                                                      parameterValues.Aggregate((a, b) => a + ",\n" + b)
                                                      ));
            }
        }
예제 #3
0
 public MyEntityTypeWriter(
     ScaffoldingUtilities scaffoldingUtilities,
     CSharpUtilities cSharpUtilities) : base(cSharpUtilities)
 {
     ScaffoldingUtilities = scaffoldingUtilities;
     CSharpUtilities      = cSharpUtilities;
 }
예제 #4
0
        public virtual void AddColumnNameAndTypeConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));


            var delimitedColumnName =
                ExtensionsProvider.For(propertyConfiguration.Property).ColumnName != null &&
                ExtensionsProvider.For(propertyConfiguration.Property).ColumnName != propertyConfiguration.Property.Name
                ? CSharpUtilities.DelimitString(
                    ExtensionsProvider.For(propertyConfiguration.Property).ColumnName)
                : null;

            var delimitedColumnTypeName =
                ExtensionsProvider.For(propertyConfiguration.Property).ColumnType != null
                ? CSharpUtilities.DelimitString(
                    ExtensionsProvider.For(propertyConfiguration.Property).ColumnType)
                : null;

            if (delimitedColumnName != null)
            {
                propertyConfiguration.FluentApiConfigurations.Add(
                    new FluentApiConfiguration(
                        nameof(RelationalPropertyBuilderExtensions.HasColumnName),
                        delimitedColumnName)
                {
                    HasAttributeEquivalent = true
                });

                if (delimitedColumnTypeName == null)
                {
                    propertyConfiguration.AttributeConfigurations.Add(
                        new AttributeConfiguration(nameof(ColumnAttribute), delimitedColumnName));
                }
                else
                {
                    propertyConfiguration.FluentApiConfigurations.Add(
                        new FluentApiConfiguration(
                            nameof(RelationalPropertyBuilderExtensions.HasColumnType),
                            delimitedColumnTypeName)
                    {
                        HasAttributeEquivalent = true
                    });
                    propertyConfiguration.AttributeConfigurations.Add(
                        new AttributeConfiguration(
                            nameof(ColumnAttribute),
                            new[] {
                        delimitedColumnName,
                        nameof(ColumnAttribute.TypeName) + " = " + delimitedColumnTypeName
                    }));
                }
            }
            else if (delimitedColumnTypeName != null)
            {
                propertyConfiguration.FluentApiConfigurations.Add(
                    new FluentApiConfiguration(
                        nameof(RelationalPropertyBuilderExtensions.HasColumnType),
                        delimitedColumnTypeName));
            }
        }
예제 #5
0
        public override void GenerateCode(IFunctionBuilder functionBuilder)
        {
            bool closeFileHandle = FunctionData.Properties.ContainsKey(FileShared.OwnsFileHandlePropertyName) ? FunctionData.Properties[FileShared.OwnsFileHandlePropertyName].GetValue <bool>() : true;

            functionBuilder.AddCode(String.Format(
                                        @"var fileHandle = (Twenty57.Linx.Components.File.Common.BinaryFileHandle){0};{1}
				return Twenty57.Linx.Components.File.BinaryFileWriteX.WriteFile(
					fileHandle, 
					{2},
					{3}, 
					{4}, 
					{5},
					message => {6}.Log(message)
					);"                    ,
                                        functionBuilder.GetParamName(FileShared.FilePathPropertyName),
                                        closeFileHandle ? string.Format("{0}fileHandle.LogEvent += message => {1}.Log(message);", Environment.NewLine, functionBuilder.ContextParamName) : string.Empty,
                                        CSharpUtilities.BoolAsString(closeFileHandle),
                                        functionBuilder.GetParamName(BinaryFileWriteShared.ContentsPropertyName),
                                        CSharpUtilities.EnumAsString(FunctionData.Properties[BinaryFileWriteShared.FileDoesNotExistPropertyName].Value),
                                        CSharpUtilities.EnumAsString(FunctionData.Properties[BinaryFileWriteShared.FileExistsPropertyName].Value),
                                        functionBuilder.ContextParamName
                                        ));

            functionBuilder.AddAssemblyReference(typeof(BinaryFileWriteX));
        }
예제 #6
0
        private void GenerateColumnAttribute(IProperty property)
        {
            var columnName = property.Relational().ColumnName;
            var columnType = property.GetConfiguredColumnType();

            var delimitedColumnName = columnName != null && columnName != property.Name ? CSharpUtilities.DelimitString(columnName) : null;
            var delimitedColumnType = columnType != null?CSharpUtilities.DelimitString(columnType) : null;

            if ((delimitedColumnName ?? delimitedColumnType) != null)
            {
                var columnAttribute = new AttributeWriter(nameof(ColumnAttribute));

                if (delimitedColumnName != null)
                {
                    columnAttribute.AddParameter(delimitedColumnName);
                }

                if (delimitedColumnType != null)
                {
                    columnAttribute.AddParameter($"{nameof(ColumnAttribute.TypeName)} = {delimitedColumnType}");
                }

                _propertyAnnotations.Add(new Dictionary <string, object>
                {
                    { "property-annotation", columnAttribute },
                });
            }
        }
예제 #7
0
        /// <summary>
        /// Generate entity type properties.
        /// </summary>
        /// <param name="entityType">Represents an entity type in an <see cref="T:Microsoft.EntityFrameworkCore.Metadata.IModel" />.</param>
        protected virtual void GenerateProperties(IEntityType entityType)
        {
            if (entityType == null)
            {
                throw new ArgumentNullException(nameof(entityType));
            }

            var properties = new List <Dictionary <string, object> >();

            foreach (var property in entityType.GetProperties().OrderBy(p => p.Scaffolding().ColumnOrdinal))
            {
                _propertyAnnotations = new List <Dictionary <string, object> >();

                if (_useDataAnnotations)
                {
                    GeneratePropertyDataAnnotations(property);
                }

                properties.Add(new Dictionary <string, object>
                {
                    { "property-type", CSharpUtilities.GetTypeName(property.ClrType) },
                    { "property-name", property.Name },
                    { "property-annotations", _propertyAnnotations }
                });
            }

            _templateData.Add("properties", properties);
        }
예제 #8
0
        public override void GenerateCode(IFunctionBuilder functionBuilder)
        {
            this.functionBuilder = functionBuilder;

            FileListX_Gen generator = new FileListX_Gen();

            generator.Session = new Dictionary <string, object>();
            generator.Session.Add("FunctionContextPropertyName", functionBuilder.ContextParamName);

            generator.Session.Add("IncludeSubfolders", CSharpUtilities.BoolAsString(FunctionData.Properties[FileListShared.IncludeSubfoldersPropertyName].GetValue <bool>()));
            generator.Session.Add("FolderPath", functionBuilder.GetParamName(FileListShared.FolderPathPropertyName));
            generator.Session.Add("SearchPattern", functionBuilder.GetParamName(FileListShared.SearchPatternPropertyName));
            generator.Session.Add("LoopResults", LoopResults);
            generator.Session.Add("ReturnFullPath", FunctionData.Properties[FileListShared.ReturnFullPathPropertyName].GetValue <bool>());

            generator.Session.Add("FileInfoTypeName", GetFileInfoTypeName());
            generator.Session.Add("OutputTypeName", functionBuilder.GetTypeName(FunctionData.Output));
            generator.Session.Add("ExecutionPathName", FileListShared.OutputFileProperty);
            generator.Session.Add("ExecutionPathOutputName", functionBuilder.ExecutionPathOutParamName);

            generator.Initialize();
            functionBuilder.AddCode(generator.TransformText());

            functionBuilder.AddAssemblyReference(typeof(FileListX));
        }
        private void GenerateTableName(IEntityType entityType, IndentedStringBuilder sb)
        {
            var tableName     = entityType.Relational().TableName;
            var schema        = entityType.Relational().Schema;
            var defaultSchema = entityType.Model.Relational().DefaultSchema;

            var explicitSchema = schema != null && schema != defaultSchema;
            var explicitTable  = explicitSchema || tableName != null && tableName != entityType.Scaffolding().DbSetName;

            if (explicitTable)
            {
                var parameterString = CSharpUtilities.DelimitString(tableName);
                if (explicitSchema)
                {
                    parameterString += ", " + CSharpUtilities.DelimitString(schema);
                }

                var lines = new List <string>
                {
                    $".{nameof(RelationalEntityTypeBuilderExtensions.ToTable)}({parameterString})"
                };

                AppendMultiLineFluentApi(entityType, lines, sb);
            }
        }
예제 #10
0
 public SqlServerModelConfigurationFactory(
     [NotNull] IRelationalAnnotationProvider extensionsProvider,
     [NotNull] CSharpUtilities cSharpUtilities,
     [NotNull] ModelUtilities modelUtilities)
     : base(extensionsProvider, cSharpUtilities, modelUtilities)
 {
 }
예제 #11
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public virtual void AddColumnNameAndTypeConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            var delimitedColumnName =
                AnnotationProvider.For(propertyConfiguration.Property).ColumnName != null &&
                AnnotationProvider.For(propertyConfiguration.Property).ColumnName != propertyConfiguration.Property.Name
                    ? CSharpUtilities.DelimitString(
                    AnnotationProvider.For(propertyConfiguration.Property).ColumnName)
                    : null;

            var delimitedColumnTypeName =
                AnnotationProvider.For(propertyConfiguration.Property).ColumnType != null
                    ? CSharpUtilities.DelimitString(
                    AnnotationProvider.For(propertyConfiguration.Property).ColumnType)
                    : null;

            if (delimitedColumnName != null &&
                delimitedColumnTypeName != null)
            {
                propertyConfiguration.FluentApiConfigurations.Add(
                    _configurationFactory.CreateFluentApiConfiguration(
                        /* hasAttributeEquivalent */ true,
                        nameof(RelationalPropertyBuilderExtensions.HasColumnName),
                        delimitedColumnName));
                propertyConfiguration.FluentApiConfigurations.Add(
                    _configurationFactory.CreateFluentApiConfiguration(
                        /* hasAttributeEquivalent */ true,
                        nameof(RelationalPropertyBuilderExtensions.HasColumnType),
                        delimitedColumnTypeName));
                propertyConfiguration.AttributeConfigurations.Add(
                    _configurationFactory.CreateAttributeConfiguration(
                        nameof(ColumnAttribute),
                        delimitedColumnName,
                        nameof(ColumnAttribute.TypeName) + " = " + delimitedColumnTypeName));
            }
            else if (delimitedColumnName != null)
            {
                propertyConfiguration.FluentApiConfigurations.Add(
                    _configurationFactory.CreateFluentApiConfiguration(
                        /* hasAttributeEquivalent */ true,
                        nameof(RelationalPropertyBuilderExtensions.HasColumnName),
                        delimitedColumnName));
                propertyConfiguration.AttributeConfigurations.Add(
                    _configurationFactory.CreateAttributeConfiguration(nameof(ColumnAttribute), delimitedColumnName));
            }
            else if (delimitedColumnTypeName != null)
            {
                propertyConfiguration.FluentApiConfigurations.Add(
                    _configurationFactory.CreateFluentApiConfiguration(
                        /* hasAttributeEquivalent */ true,
                        nameof(RelationalPropertyBuilderExtensions.HasColumnType),
                        delimitedColumnTypeName));
                propertyConfiguration.AttributeConfigurations.Add(
                    _configurationFactory.CreateAttributeConfiguration(
                        nameof(ColumnAttribute), nameof(ColumnAttribute.TypeName) + " = " + delimitedColumnTypeName));
            }
        }
예제 #12
0
 public virtual void AddConnectionStringConfiguration()
 {
     _onConfiguringConfigurations.Add(
         new OptionsBuilderConfiguration(
             UseMethodName
             + "("
             + CSharpUtilities.GenerateVerbatimStringLiteral(CustomConfiguration.ConnectionString)
             + ")"));
 }
예제 #13
0
 public SqlServerModelConfiguration(
     [NotNull] IModel model,
     [NotNull] CustomConfiguration customConfiguration,
     [NotNull] IRelationalAnnotationProvider extensionsProvider,
     [NotNull] CSharpUtilities cSharpUtilities,
     [NotNull] ModelUtilities modelUtilities)
     : base(model, customConfiguration, extensionsProvider, cSharpUtilities, modelUtilities)
 {
 }
        protected RelationalMetadataModelProvider([NotNull] ILoggerFactory loggerFactory,
                                                  [NotNull] ModelUtilities modelUtilities, [NotNull] CSharpUtilities cSharpUtilities)
        {
            Check.NotNull(loggerFactory, nameof(loggerFactory));
            Check.NotNull(modelUtilities, nameof(modelUtilities));

            Logger          = loggerFactory.CreateCommandsLogger();
            CSharpUtilities = cSharpUtilities;
            ModelUtilities  = modelUtilities;
        }
예제 #15
0
 public CustomConfigurationFactory(
     IRelationalAnnotationProvider extensionsProvider,
     CSharpUtilities cSharpUtilities,
     ScaffoldingUtilities scaffoldingUtilities)
     : base(
         extensionsProvider,
         cSharpUtilities,
         scaffoldingUtilities)
 {
 }
        private void AddDependentAndPrincipalNavigationPropertyAnnotations([NotNull] IModel codeGenModel)
        {
            Check.NotNull(codeGenModel, nameof(codeGenModel));

            var entityTypeToExistingIdentifiers = new Dictionary <IEntityType, List <string> >();

            foreach (var entityType in codeGenModel.EntityTypes)
            {
                var existingIdentifiers = new List <string>();
                entityTypeToExistingIdentifiers.Add(entityType, existingIdentifiers);
                existingIdentifiers.Add(entityType.Name);
                existingIdentifiers.AddRange(
                    ModelUtilities.OrderedProperties(entityType).Select(p => p.Name));
            }

            foreach (var entityType in codeGenModel.EntityTypes)
            {
                var dependentEndExistingIdentifiers = entityTypeToExistingIdentifiers[entityType];
                foreach (var foreignKey in entityType.GetForeignKeys().Cast <ForeignKey>())
                {
                    // set up the name of the navigation property on the dependent end of the foreign key
                    var dependentEndNavigationPropertyCandidateName =
                        ModelUtilities.GetDependentEndCandidateNavigationPropertyName(foreignKey);
                    var dependentEndNavigationPropertyName =
                        CSharpUtilities.GenerateCSharpIdentifier(
                            dependentEndNavigationPropertyCandidateName,
                            dependentEndExistingIdentifiers,
                            NavigationUniquifier);
                    foreignKey.AddAnnotation(
                        AnnotationNameDependentEndNavPropName,
                        dependentEndNavigationPropertyName);
                    dependentEndExistingIdentifiers.Add(dependentEndNavigationPropertyName);

                    // set up the name of the navigation property on the principal end of the foreign key
                    var principalEndExistingIdentifiers =
                        entityTypeToExistingIdentifiers[foreignKey.PrincipalEntityType];
                    var principalEndNavigationPropertyCandidateName =
                        foreignKey.IsSelfReferencing()
                            ? string.Format(
                            CultureInfo.CurrentCulture,
                            SelfReferencingPrincipalEndNavigationNamePattern,
                            dependentEndNavigationPropertyName)
                            : ModelUtilities.GetPrincipalEndCandidateNavigationPropertyName(foreignKey);
                    var principalEndNavigationPropertyName =
                        CSharpUtilities.GenerateCSharpIdentifier(
                            principalEndNavigationPropertyCandidateName,
                            principalEndExistingIdentifiers,
                            NavigationUniquifier);
                    foreignKey.AddAnnotation(
                        AnnotationNamePrincipalEndNavPropName,
                        principalEndNavigationPropertyName);
                    principalEndExistingIdentifiers.Add(principalEndNavigationPropertyName);
                }
            }
        }
예제 #17
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public virtual string ClassName()
        {
            var annotatedName = AnnotationProvider.For(Model).DatabaseName;

            if (!string.IsNullOrEmpty(annotatedName))
            {
                return(CSharpUtilities.GenerateCSharpIdentifier(annotatedName + DbContextSuffix, null));
            }

            return(DefaultDbContextName);
        }
        public SqliteMetadataModelProvider(
            [NotNull] ILoggerFactory loggerFactory,
            [NotNull] ModelUtilities modelUtilities,
            [NotNull] CSharpUtilities cSharpUtilities,
            [NotNull] SqliteReverseTypeMapper typeMapper)
            : base(loggerFactory, modelUtilities, cSharpUtilities)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));

            _typeMapper = typeMapper;
        }
예제 #19
0
        public override string ClassName()
        {
            var builder = new SqlConnectionStringBuilder(CustomConfiguration.ConnectionString);

            if (builder.InitialCatalog != null)
            {
                return(CSharpUtilities.GenerateCSharpIdentifier(
                           builder.InitialCatalog + DbContextSuffix, null));
            }

            return(base.ClassName());
        }
예제 #20
0
        public ModelConfigurationFactory(
            [NotNull] IRelationalAnnotationProvider extensionsProvider,
            [NotNull] CSharpUtilities cSharpUtilities,
            [NotNull] ModelUtilities modelUtilities)
        {
            Check.NotNull(extensionsProvider, nameof(extensionsProvider));
            Check.NotNull(cSharpUtilities, nameof(cSharpUtilities));
            Check.NotNull(modelUtilities, nameof(modelUtilities));

            ExtensionsProvider = extensionsProvider;
            CSharpUtilities    = cSharpUtilities;
            ModelUtilities     = modelUtilities;
        }
        public override string ClassName()
        {
            var sqliteConnection = new SqliteConnectionStringBuilder(CustomConfiguration.ConnectionString);

            if (sqliteConnection.DataSource != null)
            {
                var fileName = Path.GetFileNameWithoutExtension(sqliteConnection.DataSource);
                return(CSharpUtilities.GenerateCSharpIdentifier(
                           fileName + DbContextSuffix, null));
            }

            return(base.ClassName());
        }
예제 #22
0
        public virtual void AddDefaultValueConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (ExtensionsProvider.For(propertyConfiguration.Property).DefaultValue != null)
            {
                propertyConfiguration.FluentApiConfigurations.Add(
                    new FluentApiConfiguration(
                        nameof(RelationalPropertyBuilderExtensions.HasDefaultValue),
                        CSharpUtilities.GenerateLiteral(
                            (dynamic)ExtensionsProvider.For(propertyConfiguration.Property).DefaultValue)));
            }
        }
예제 #23
0
        public virtual void AddDefaultExpressionConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (ExtensionsProvider.For(propertyConfiguration.Property).GeneratedValueSql != null)
            {
                propertyConfiguration.FluentApiConfigurations.Add(
                    new FluentApiConfiguration(
                        nameof(RelationalPropertyBuilderExtensions.HasDefaultValueSql),
                        CSharpUtilities.DelimitString(
                            ExtensionsProvider.For(propertyConfiguration.Property).GeneratedValueSql)));
            }
        }
예제 #24
0
        public SqlServerMetadataModelProvider(
            [NotNull] ILoggerFactory loggerFactory,
            [NotNull] ModelUtilities modelUtilities,
            [NotNull] CSharpUtilities cSharpUtilities,
            [NotNull] IRelationalAnnotationProvider extensionsProvider,
            [NotNull] SqlServerLiteralUtilities sqlServerLiteralUtilities)
            : base(loggerFactory, modelUtilities, cSharpUtilities)
        {
            Check.NotNull(extensionsProvider, nameof(extensionsProvider));
            Check.NotNull(sqlServerLiteralUtilities, nameof(sqlServerLiteralUtilities));

            ExtensionsProvider         = extensionsProvider;
            _sqlServerLiteralUtilities = sqlServerLiteralUtilities;
        }
        private void GenerateIndex(IIndex index, IndentedStringBuilder sb)
        {
            var lines = new List <string>
            {
                $".{nameof(EntityTypeBuilder.HasIndex)}(e => {GenerateLambdaToKey(index.Properties, "e")})"
            };

            var annotations = index.GetAnnotations().ToList();

            if (!string.IsNullOrEmpty((string)index[RelationalAnnotationNames.Name]))
            {
                lines.Add($".{nameof(RelationalIndexBuilderExtensions.HasName)}({CSharpUtilities.DelimitString(index.Relational().Name)})");
                RemoveAnnotation(ref annotations, RelationalAnnotationNames.Name);
            }

            if (index.IsUnique)
            {
                lines.Add($".{nameof(IndexBuilder.IsUnique)}()");
            }

            if (index.Relational().Filter != null)
            {
                lines.Add($".{nameof(RelationalIndexBuilderExtensions.HasFilter)}({CSharpUtilities.DelimitString(index.Relational().Filter)})");
                RemoveAnnotation(ref annotations, RelationalAnnotationNames.Filter);
            }

            var annotationsToRemove = new List <IAnnotation>();

            foreach (var annotation in annotations)
            {
                if (_annotationCodeGenerator.IsHandledByConvention(index, annotation))
                {
                    annotationsToRemove.Add(annotation);
                }
                else
                {
                    var line = _annotationCodeGenerator.GenerateFluentApi(index, annotation, Language);

                    if (line != null)
                    {
                        lines.Add(line);
                        annotationsToRemove.Add(annotation);
                    }
                }
            }

            lines.AddRange(GenerateAnnotations(annotations.Except(annotationsToRemove)));

            AppendMultiLineFluentApi(index.DeclaringEntityType, lines, sb);
        }
예제 #26
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            this.Write("\r\n");
            this.Write("\r\nvar beginTransactionX = new Twenty57.Linx.Components.Database.BeginTransaction." +
                       "BeginTransactionX(\r\n\t");

            #line 12 "D:\Hg\Linx5 Components\Database\Code\Database\BeginTransaction\BeginTransaction_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CSharpUtilities.EnumAsString(ConnectionType)));

            #line default
            #line hidden
            this.Write(",\r\n\t");

            #line 13 "D:\Hg\Linx5 Components\Database\Code\Database\BeginTransaction\BeginTransaction_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(ConnectionStringPropertyName));

            #line default
            #line hidden
            this.Write(",\r\n\tSystem.Data.IsolationLevel.");

            #line 14 "D:\Hg\Linx5 Components\Database\Code\Database\BeginTransaction\BeginTransaction_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(IsolationLevelName));

            #line default
            #line hidden
            this.Write(");\r\nbeginTransactionX.Transaction.LogEvent += message => ");

            #line 15 "D:\Hg\Linx5 Components\Database\Code\Database\BeginTransaction\BeginTransaction_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(FunctionContextProperty));

            #line default
            #line hidden
            this.Write(".Log(message);\r\n");

            #line 16 "D:\Hg\Linx5 Components\Database\Code\Database\BeginTransaction\BeginTransaction_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(ExecutionPathOutputName));

            #line default
            #line hidden
            this.Write(" = beginTransactionX.Select(transaction => new Twenty57.Linx.Plugin.Common.CodeGe" +
                       "neration.NextResult(");

            #line 16 "D:\Hg\Linx5 Components\Database\Code\Database\BeginTransaction\BeginTransaction_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CSharpUtilities.ToVerbatimString(ExecutionPathName)));

            #line default
            #line hidden
            this.Write(", transaction));\r\n");
            return(this.GenerationEnvironment.ToString());
        }
예제 #27
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public virtual void AddDefaultValueConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (AnnotationProvider.For(propertyConfiguration.Property).DefaultValue != null)
            {
                propertyConfiguration.FluentApiConfigurations.Add(
                    _configurationFactory.CreateFluentApiConfiguration(
                        /* hasAttributeEquivalent */ false,
                        nameof(RelationalPropertyBuilderExtensions.HasDefaultValue),
                        CSharpUtilities.GenerateLiteral(
                            (dynamic)AnnotationProvider.For(propertyConfiguration.Property).DefaultValue)));
            }
        }
예제 #28
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public virtual void AddComputedExpressionConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (AnnotationProvider.For(propertyConfiguration.Property).ComputedColumnSql != null)
            {
                propertyConfiguration.FluentApiConfigurations.Add(
                    _configurationFactory.CreateFluentApiConfiguration(
                        /* hasAttributeEquivalent */ false,
                        nameof(RelationalPropertyBuilderExtensions.HasComputedColumnSql),
                        CSharpUtilities.DelimitString(
                            AnnotationProvider.For(propertyConfiguration.Property).ComputedColumnSql)));
            }
        }
예제 #29
0
        public override void GenerateCode(IFunctionBuilder functionBuilder)
        {
            RobocopyShared.ModeOption modeOption = FunctionData.Properties[RobocopyShared.ModePropertyName].GetValue <RobocopyShared.ModeOption>();

            functionBuilder.AddCode(string.Format("Twenty57.Linx.Components.File.RobocopyX.Execute({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21},{22},{23},{24},{25},{26},{27},{28},{29},{30},{31},{32},{33},{34},{35},{36},{37},{38},message => {39}.Log(message));",
                                                  functionBuilder.GetParamName(RobocopyShared.SourceDirectoryPropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.TargetDirectoryPropertyName)
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.CopySubdirectoriesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.IncludeEmptySubdirectoriesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.RestartModePropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.BackupModePropertyName].GetValue <bool>())
                                                  , functionBuilder.GetParamName(RobocopyShared.NumberOfRetriesPropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.TimeBetweenRetriesPropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.FilePatternPropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.ExcludeFilesPropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.ExcludeDirectoriesPropertyName)
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludesChangedFilesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludesNewerFilesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludesOlderFilesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludesExtraFilesAndDirectoriesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludesLonelyFilesAndDirectoriesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.IncludesSameFilesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.IncludesTweakedFilesPropertyName].GetValue <bool>())
                                                  , functionBuilder.GetParamName(RobocopyShared.MaxFileSizePropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.MinFileSizePropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.MaxAgePropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.MinAgePropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.MaxLastAccessDatePropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.MinLastAccessDatePropertyName)
                                                  , functionBuilder.GetParamName(RobocopyShared.LogFilePropertyName)
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.OverwriteFilePropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ListFilesOnlyPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.LogAllExtraFilesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.VerbosePropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.IncludeSourceFileTimestampsPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.IncludeFullPathPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.LogSizeAsBytesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludeFileSizePropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludeFileClassPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludeFileNamesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludeDirectoryNamesPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.ExcludeProgressPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.BoolAsString(FunctionData.Properties[RobocopyShared.IncludeETAPropertyName].GetValue <bool>())
                                                  , CSharpUtilities.EnumAsString(modeOption)
                                                  , functionBuilder.ContextParamName));

            functionBuilder.AddAssemblyReference(typeof(Robocopy));
        }
예제 #30
0
        public RazorTemplating(
            [NotNull] ICompilationService compilationService,
            [NotNull] MetadataReferencesProvider metadataReferencesProvider,
            [NotNull] ModelUtilities modelUtilities,
            [NotNull] CSharpUtilities csharpUtiliies)
        {
            Check.NotNull(compilationService, nameof(compilationService));
            Check.NotNull(metadataReferencesProvider, nameof(metadataReferencesProvider));
            Check.NotNull(modelUtilities, nameof(modelUtilities));
            Check.NotNull(csharpUtiliies, nameof(csharpUtiliies));

            _compilationService         = compilationService;
            _metadataReferencesProvider = metadataReferencesProvider;
            _modelUtilities             = modelUtilities;
            _csharpUtiliies             = csharpUtiliies;
        }