示例#1
0
        /// <inheritdoc />
        public virtual void Generate(IServiceProperty property, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                var annotations = parameters.Annotations;
                annotations.Remove(CoreAnnotationNames.PropertyAccessMode);
            }

            GenerateSimpleAnnotations(parameters);
        }
        /// <inheritdoc />
        public override void Generate(IKey key, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                var annotations = parameters.Annotations;
                annotations.Remove(SqlServerAnnotationNames.Clustered);
            }

            base.Generate(key, parameters);
        }
示例#3
0
        /// <inheritdoc />
        public virtual void Generate(ISkipNavigation navigation, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                var annotations = parameters.Annotations;
                annotations.Remove(CoreAnnotationNames.PropertyAccessMode);
                annotations.Remove(CoreAnnotationNames.EagerLoaded);
            }

            GenerateSimpleAnnotations(parameters);
        }
    /// <inheritdoc />
    public override void Generate(IModel model, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
    {
        var annotations = parameters.Annotations;

        if (!parameters.IsRuntime)
        {
            annotations.Remove(CosmosAnnotationNames.Throughput);
        }

        base.Generate(model, parameters);
    }
        /// <inheritdoc />
        public override void Generate(IProperty property, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            var annotations = parameters.Annotations;

            if (!parameters.IsRuntime)
            {
                annotations.Remove(SqliteAnnotationNames.Srid);
            }

            base.Generate(property, parameters);
        }
示例#6
0
        /// <summary>
        ///     Generates code to create the given annotations using literals.
        /// </summary>
        /// <param name="parameters"> Parameters used during code generation. </param>
        protected virtual void GenerateSimpleAnnotations(CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            foreach (var(name, value) in parameters.Annotations.OrderBy(a => a.Key))
            {
                if (value != null)
                {
                    AddNamespace(value as Type ?? value.GetType(), parameters.Namespaces);
                }

                GenerateSimpleAnnotation(name, Dependencies.CSharpHelper.UnknownLiteral(value), parameters);
            }
        }
        /// <inheritdoc />
        public override void Generate(IIndex index, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                var annotations = parameters.Annotations;
                annotations.Remove(SqlServerAnnotationNames.Clustered);
                annotations.Remove(SqlServerAnnotationNames.CreatedOnline);
                annotations.Remove(SqlServerAnnotationNames.Include);
                annotations.Remove(SqlServerAnnotationNames.FillFactor);
            }

            base.Generate(index, parameters);
        }
示例#8
0
        /// <inheritdoc />
        public virtual void Generate(IEntityType entityType, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            var annotations = parameters.Annotations;

            if (!parameters.IsRuntime)
            {
                annotations.Remove(CoreAnnotationNames.PropertyAccessMode);
                annotations.Remove(CoreAnnotationNames.NavigationAccessMode);
                annotations.Remove(CoreAnnotationNames.DiscriminatorProperty);
            }

            GenerateSimpleAnnotations(parameters);
        }
    /// <inheritdoc />
    public override void Generate(IEntityType entityType, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
    {
        var annotations = parameters.Annotations;

        if (!parameters.IsRuntime)
        {
            annotations.Remove(CosmosAnnotationNames.AnalyticalStoreTimeToLive);
            annotations.Remove(CosmosAnnotationNames.DefaultTimeToLive);
            annotations.Remove(CosmosAnnotationNames.Throughput);
        }

        base.Generate(entityType, parameters);
    }
示例#10
0
        /// <inheritdoc />
        public override void Generate(IModel model, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            var annotations = parameters.Annotations;

            if (parameters.IsRuntime)
            {
                annotations.Remove(RelationalAnnotationNames.ModelDependencies);
                annotations.Remove(RelationalAnnotationNames.RelationalModel);
            }
            else
            {
                annotations.Remove(RelationalAnnotationNames.Collation);

                if (annotations.TryGetAndRemove(
                        RelationalAnnotationNames.DbFunctions,
                        out SortedDictionary <string, IDbFunction> functions))
                {
                    parameters.Namespaces.Add(typeof(SortedDictionary <,>).Namespace !);
                    parameters.Namespaces.Add(typeof(BindingFlags).Namespace !);
                    var functionsVariable = Dependencies.CSharpHelper.Identifier("functions", parameters.ScopeVariables, capitalize: false);
                    parameters.MainBuilder
                    .Append("var ").Append(functionsVariable).AppendLine(" = new SortedDictionary<string, IDbFunction>();");

                    foreach (var function in functions.Values)
                    {
                        Create(function, functionsVariable, parameters);
                    }

                    GenerateSimpleAnnotation(RelationalAnnotationNames.DbFunctions, functionsVariable, parameters);
                }

                if (annotations.TryGetAndRemove(
                        RelationalAnnotationNames.Sequences,
                        out SortedDictionary <(string, string?), ISequence> sequences))
                {
                    parameters.Namespaces.Add(typeof(SortedDictionary <,>).Namespace !);
                    var sequencesVariable = Dependencies.CSharpHelper.Identifier("sequences", parameters.ScopeVariables, capitalize: false);
                    parameters.MainBuilder
                    .Append("var ").Append(sequencesVariable).AppendLine(" = new SortedDictionary<(string, string), ISequence>();");

                    foreach (var sequencePair in sequences)
                    {
                        Create(sequencePair.Value, sequencesVariable, parameters);
                    }

                    GenerateSimpleAnnotation(RelationalAnnotationNames.Sequences, sequencesVariable, parameters);
                }
            }

            base.Generate(model, parameters);
        }
示例#11
0
        /// <inheritdoc />
        public virtual void Generate(IModel model, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                parameters.Annotations.Remove(CoreAnnotationNames.PropertyAccessMode);
            }
            else
            {
                parameters.Annotations.Remove(CoreAnnotationNames.ModelDependencies);
                parameters.Annotations.Remove(CoreAnnotationNames.ReadOnlyModel);
            }

            GenerateSimpleAnnotations(parameters);
        }
        /// <inheritdoc />
        public override void Generate(IModel model, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                var annotations = parameters.Annotations;
                annotations.Remove(SqlServerAnnotationNames.IdentityIncrement);
                annotations.Remove(SqlServerAnnotationNames.IdentitySeed);
                annotations.Remove(SqlServerAnnotationNames.MaxDatabaseSize);
                annotations.Remove(SqlServerAnnotationNames.PerformanceLevelSql);
                annotations.Remove(SqlServerAnnotationNames.ServiceTierSql);
            }

            base.Generate(model, parameters);
        }
        /// <inheritdoc />
        public override void Generate(IEntityType entityType, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                var annotations = parameters.Annotations;
                annotations.Remove(SqlServerAnnotationNames.TemporalHistoryTableName);
                annotations.Remove(SqlServerAnnotationNames.TemporalHistoryTableSchema);
                annotations.Remove(SqlServerAnnotationNames.TemporalPeriodEndColumnName);
                annotations.Remove(SqlServerAnnotationNames.TemporalPeriodEndPropertyName);
                annotations.Remove(SqlServerAnnotationNames.TemporalPeriodStartColumnName);
                annotations.Remove(SqlServerAnnotationNames.TemporalPeriodStartPropertyName);
            }

            base.Generate(entityType, parameters);
        }
示例#14
0
    /// <inheritdoc />
    public virtual void Generate(ITypeMappingConfiguration typeConfiguration, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
    {
        if (!parameters.IsRuntime)
        {
            var annotations = parameters.Annotations;
            foreach (var(key, _) in annotations)
            {
                if (CoreAnnotationNames.AllNames.Contains(key))
                {
                    annotations.Remove(key);
                }
            }
        }

        GenerateSimpleAnnotations(parameters);
    }
示例#15
0
    /// <inheritdoc />
    public virtual void Generate(IServiceProperty property, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
    {
        if (!parameters.IsRuntime)
        {
            var annotations = parameters.Annotations;
            foreach (var(key, _) in annotations)
            {
                if (CoreAnnotationNames.AllNames.Contains(key))
                {
                    annotations.Remove(key);
                }
            }
        }

        GenerateSimpleAnnotations(parameters);
    }
示例#16
0
        /// <inheritdoc />
        public virtual void Generate(IIndex index, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                var annotations = parameters.Annotations;
                foreach (var annotation in annotations)
                {
                    if (CoreAnnotationNames.AllNames.Contains(annotation.Key))
                    {
                        annotations.Remove(annotation.Key);
                    }
                }
            }

            GenerateSimpleAnnotations(parameters);
        }
        /// <inheritdoc />
        public override void Generate(IProperty property, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                var annotations = parameters.Annotations;
                annotations.Remove(SqlServerAnnotationNames.IdentityIncrement);
                annotations.Remove(SqlServerAnnotationNames.IdentitySeed);
                annotations.Remove(SqlServerAnnotationNames.Sparse);

                if (!annotations.ContainsKey(SqlServerAnnotationNames.ValueGenerationStrategy))
                {
                    annotations[SqlServerAnnotationNames.ValueGenerationStrategy] = property.GetValueGenerationStrategy();
                }
            }

            base.Generate(property, parameters);
        }
示例#18
0
    /// <inheritdoc />
    public virtual void Generate(IEntityType entityType, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
    {
        var annotations = parameters.Annotations;

        if (!parameters.IsRuntime)
        {
            foreach (var(key, _) in annotations)
            {
                if (CoreAnnotationNames.AllNames.Contains(key) &&
                    key != CoreAnnotationNames.DiscriminatorMappingComplete)
                {
                    annotations.Remove(key);
                }
            }
        }

        GenerateSimpleAnnotations(parameters);
    }
示例#19
0
        /// <summary>
        ///     Generates code to create the given annotation.
        /// </summary>
        /// <param name="annotationName"> The annotation name. </param>
        /// <param name="valueString"> The annotation value as a literal. </param>
        /// <param name="parameters"> Additional parameters used during code generation. </param>
        protected virtual void GenerateSimpleAnnotation(
            string annotationName,
            string valueString,
            CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (parameters.TargetName != "this")
            {
                parameters.MainBuilder
                .Append(parameters.TargetName)
                .Append('.');
            }

            parameters.MainBuilder
            .Append(parameters.IsRuntime ? "AddRuntimeAnnotation(" : "AddAnnotation(")
            .Append(Dependencies.CSharpHelper.Literal(annotationName))
            .Append(", ")
            .Append(valueString)
            .AppendLine(");");
        }
示例#20
0
        /// <inheritdoc />
        public virtual void Generate(IProperty property, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (!parameters.IsRuntime)
            {
                var annotations = parameters.Annotations;
                annotations.Remove(CoreAnnotationNames.PropertyAccessMode);
                annotations.Remove(CoreAnnotationNames.BeforeSaveBehavior);
                annotations.Remove(CoreAnnotationNames.AfterSaveBehavior);
                annotations.Remove(CoreAnnotationNames.MaxLength);
                annotations.Remove(CoreAnnotationNames.Unicode);
                annotations.Remove(CoreAnnotationNames.Precision);
                annotations.Remove(CoreAnnotationNames.Scale);
                annotations.Remove(CoreAnnotationNames.ProviderClrType);
                annotations.Remove(CoreAnnotationNames.ValueGeneratorFactory);
                annotations.Remove(CoreAnnotationNames.ValueGeneratorFactoryType);
                annotations.Remove(CoreAnnotationNames.ValueConverter);
                annotations.Remove(CoreAnnotationNames.ValueConverterType);
                annotations.Remove(CoreAnnotationNames.ValueComparer);
                annotations.Remove(CoreAnnotationNames.ValueComparerType);
            }

            GenerateSimpleAnnotations(parameters);
        }
示例#21
0
    /// <inheritdoc />
    public virtual void Generate(IModel model, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
    {
        var annotations = parameters.Annotations;

        if (!parameters.IsRuntime)
        {
            foreach (var(key, _) in annotations)
            {
                if (CoreAnnotationNames.AllNames.Contains(key) &&
                    key != CoreAnnotationNames.ProductVersion &&
                    key != CoreAnnotationNames.FullChangeTrackingNotificationsRequired)
                {
                    annotations.Remove(key);
                }
            }
        }
        else
        {
            annotations.Remove(CoreAnnotationNames.ModelDependencies);
            annotations.Remove(CoreAnnotationNames.ReadOnlyModel);
        }

        GenerateSimpleAnnotations(parameters);
    }
示例#22
0
 /// <inheritdoc />
 public virtual void Generate(IForeignKey foreignKey, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
 {
     GenerateSimpleAnnotations(parameters);
 }
示例#23
0
        private void Create(
            IDbFunction function,
            string functionsVariable,
            CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
        {
            if (function.Translation != null)
            {
                throw new InvalidOperationException(RelationalStrings.CompiledModelFunctionTranslation(function.Name));
            }

            if (function is IConventionDbFunction conventionFunction &&
                conventionFunction.GetTypeMappingConfigurationSource() != null)
            {
                throw new InvalidOperationException(RelationalStrings.CompiledModelFunctionTypeMapping(
                                                        function.Name, "Customize()", parameters.ClassName));
            }

            AddNamespace(function.ReturnType, parameters.Namespaces);

            var code             = Dependencies.CSharpHelper;
            var functionVariable = code.Identifier(
                function.MethodInfo?.Name ?? function.Name, parameters.ScopeVariables, capitalize: false);
            var mainBuilder = parameters.MainBuilder;

            mainBuilder
            .Append("var ").Append(functionVariable).AppendLine(" = new RuntimeDbFunction(").IncrementIndent()
            .Append(code.Literal(function.ModelName)).AppendLine(",")
            .Append(parameters.TargetName).AppendLine(",")
            .Append(code.Literal(function.ReturnType)).AppendLine(",")
            .Append(code.Literal(function.Name));

            if (function.Schema != null)
            {
                mainBuilder.AppendLine(",")
                .Append("schema: ").Append(code.Literal(function.Schema));
            }

            if (function.StoreType != null)
            {
                mainBuilder.AppendLine(",")
                .Append("storeType: ").Append(code.Literal(function.StoreType));
            }

            if (function.MethodInfo != null)
            {
                var method = function.MethodInfo;
                mainBuilder.AppendLine(",")
                .Append("methodInfo: ").Append(code.Literal(method.DeclaringType !)).AppendLine(".GetMethod(").IncrementIndent()
                .Append(code.Literal(method.Name !)).AppendLine(",")
                .Append(method.IsPublic ? "BindingFlags.Public" : "BindingFlags.NonPublic")
                .Append(method.IsStatic ? " | BindingFlags.Static" : " | BindingFlags.Instance")
                .AppendLine(" | BindingFlags.DeclaredOnly,")
                .AppendLine("null,")
                .Append("new Type[] { ").Append(string.Join(", ", method.GetParameters().Select(p => code.Literal((Type)p.ParameterType)))).AppendLine(" },")
                .Append("null)").DecrementIndent();
            }

            if (function.IsScalar)
            {
                mainBuilder.AppendLine(",")
                .Append("scalar: ").Append(code.Literal(function.IsScalar));
            }

            if (function.IsAggregate)
            {
                mainBuilder.AppendLine(",")
                .Append("aggregate: ").Append(code.Literal(function.IsAggregate));
            }

            if (function.IsNullable)
            {
                mainBuilder.AppendLine(",")
                .Append("nullable: ").Append(code.Literal(function.IsNullable));
            }

            if (function.IsBuiltIn)
            {
                mainBuilder.AppendLine(",")
                .Append("builtIn: ").Append(code.Literal(function.IsBuiltIn));
            }

            mainBuilder.AppendLine(");").DecrementIndent()
            .AppendLine();

            var parameterParameters = parameters with {
                TargetName = functionVariable
            };

            foreach (var parameter in function.Parameters)
            {
                Create(parameter, parameterParameters);
            }

            CreateAnnotations(
                function,
                Generate,
                parameters with {
                TargetName = functionVariable
            });
示例#24
0
 /// <inheritdoc />
 public virtual void Generate(IIndex index, CSharpRuntimeAnnotationCodeGeneratorParameters parameters)
 {
     GenerateSimpleAnnotations(parameters);
 }