Exemple #1
0
        public override void AddTableNameConfiguration(EntityConfiguration entityConfiguration)
        {
            // Rather than being smart, we're just always configuring the
            // table name for every entity.

            var entityType          = entityConfiguration.EntityType;
            var delimitedTableName  = CSharpUtilities.DelimitString(AnnotationProvider.For(entityType).TableName);
            var delimitedSchemaName = CSharpUtilities.DelimitString(AnnotationProvider.For(entityType).Schema);

            entityConfiguration.FluentApiConfigurations.Add(
                _configurationFactory.CreateFluentApiConfiguration(
                    true, /* <= hasAttributeEquivalent */
                    nameof(RelationalEntityTypeBuilderExtensions.ToTable),
                    delimitedTableName,
                    delimitedSchemaName));

            entityConfiguration.AttributeConfigurations.Add(
                _configurationFactory.CreateAttributeConfiguration(
                    nameof(TableAttribute),
                    delimitedTableName,
                    $"{nameof(TableAttribute.Schema)} = {delimitedSchemaName}"));
        }
Exemple #2
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 AddSequenceConfigurations()
        {
            _sequenceConfigurations = new List <SequenceConfiguration>();
            foreach (var sequence in AnnotationProvider.For(Model).Sequences)
            {
                var config = _configurationFactory.CreateSequenceConfiguration();

                config.NameIdentifier = CSharpUtilities.DelimitString(sequence.Name);

                if (sequence.ClrType != Sequence.DefaultClrType)
                {
                    config.TypeIdentifier = CSharpUtilities.GetTypeName(sequence.ClrType);
                }

                if (!string.IsNullOrEmpty(sequence.Schema) &&
                    AnnotationProvider.For(Model).DefaultSchema != sequence.Schema)
                {
                    config.SchemaNameIdentifier = CSharpUtilities.DelimitString(sequence.Schema);
                }

                if (sequence.StartValue != Sequence.DefaultStartValue)
                {
                    config.FluentApiConfigurations.Add(
                        _configurationFactory.CreateFluentApiConfiguration(
                            false,
                            nameof(RelationalSequenceBuilder.StartsAt),
                            sequence.StartValue.ToString(CultureInfo.InvariantCulture)));
                }
                if (sequence.IncrementBy != Sequence.DefaultIncrementBy)
                {
                    config.FluentApiConfigurations.Add(
                        _configurationFactory.CreateFluentApiConfiguration(
                            false,
                            nameof(RelationalSequenceBuilder.IncrementsBy),
                            sequence.IncrementBy.ToString(CultureInfo.InvariantCulture)));
                }

                if (sequence.MinValue != Sequence.DefaultMinValue)
                {
                    config.FluentApiConfigurations.Add(
                        _configurationFactory.CreateFluentApiConfiguration(
                            false,
                            nameof(RelationalSequenceBuilder.HasMin),
                            sequence.MinValue?.ToString(CultureInfo.InvariantCulture) ?? ""));
                }

                if (sequence.MaxValue != Sequence.DefaultMaxValue)
                {
                    config.FluentApiConfigurations.Add(
                        _configurationFactory.CreateFluentApiConfiguration(
                            false,
                            nameof(RelationalSequenceBuilder.HasMax),
                            sequence.MaxValue?.ToString(CultureInfo.InvariantCulture) ?? ""));
                }

                if (sequence.IsCyclic != Sequence.DefaultIsCyclic)
                {
                    config.FluentApiConfigurations.Add(
                        _configurationFactory.CreateFluentApiConfiguration(
                            false,
                            nameof(RelationalSequenceBuilder.IsCyclic)));
                }

                _sequenceConfigurations.Add(config);
            }
        }
        public virtual void AddTableNameConfiguration([NotNull] EntityConfiguration entityConfiguration)
        {
            Check.NotNull(entityConfiguration, nameof(entityConfiguration));

            var entityType = entityConfiguration.EntityType;

            if (ExtensionsProvider.For(entityType).Schema != null &&
                ExtensionsProvider.For(entityType).Schema != ExtensionsProvider.For(Model).DefaultSchema)
            {
                var delimitedTableName =
                    CSharpUtilities.DelimitString(ExtensionsProvider.For(entityType).TableName);
                var delimitedSchemaName =
                    CSharpUtilities.DelimitString(ExtensionsProvider.For(entityType).Schema);
                entityConfiguration.FluentApiConfigurations.Add(
                    _configurationFactory.CreateFluentApiConfiguration(
                        /* hasAttributeEquivalent */ true,
                        nameof(RelationalEntityTypeBuilderExtensions.ToTable),
                        delimitedTableName,
                        delimitedSchemaName));
                entityConfiguration.AttributeConfigurations.Add(
                    _configurationFactory.CreateAttributeConfiguration(
                        nameof(TableAttribute),
                        delimitedTableName,
                        nameof(TableAttribute.Schema) + " = " + delimitedSchemaName));
            }
            else if (ExtensionsProvider.For(entityType).TableName != null &&
                     ExtensionsProvider.For(entityType).TableName != entityType.DisplayName())
            {
                var delimitedTableName =
                    CSharpUtilities.DelimitString(ExtensionsProvider.For(entityType).TableName);
                entityConfiguration.FluentApiConfigurations.Add(
                    _configurationFactory.CreateFluentApiConfiguration(
                        /* hasAttributeEquivalent */ true,
                        nameof(RelationalEntityTypeBuilderExtensions.ToTable),
                        delimitedTableName));
                entityConfiguration.AttributeConfigurations.Add(
                    _configurationFactory.CreateAttributeConfiguration(
                        nameof(TableAttribute), delimitedTableName));
            }
        }