Exemplo n.º 1
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));
            }
        }
Exemplo n.º 2
0
        public virtual void AddValueGeneratedConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            var valueGenerated = propertyConfiguration.Property.ValueGenerated;

            switch (valueGenerated)
            {
            case ValueGenerated.OnAdd:
                // If this property is the single integer primary key on the EntityType then
                // KeyConvention assumes ValueGeneratedOnAdd() so there is no need to add it.
                if (_keyConvention.FindValueGeneratedOnAddProperty(
                        new List <Property> {
                    (Property)propertyConfiguration.Property
                },
                        (EntityType)propertyConfiguration.EntityConfiguration.EntityType) == null)
                {
                    propertyConfiguration.FluentApiConfigurations.Add(
                        new FluentApiConfiguration(nameof(PropertyBuilder.ValueGeneratedOnAdd)));
                }

                break;

            case ValueGenerated.OnAddOrUpdate:
                propertyConfiguration.FluentApiConfigurations.Add(
                    new FluentApiConfiguration(nameof(PropertyBuilder.ValueGeneratedOnAddOrUpdate)));
                break;
            }
        }
Exemplo n.º 3
0
        public virtual void AddPropertyConfiguration([NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            AddRequiredConfiguration(propertyConfiguration);
            AddMaxLengthConfiguration(propertyConfiguration);
            AddColumnNameAndTypeConfiguration(propertyConfiguration);
            AddDefaultValueConfiguration(propertyConfiguration);
            AddDefaultExpressionConfiguration(propertyConfiguration);
            AddValueGeneratedConfiguration(propertyConfiguration);
        }
Exemplo n.º 4
0
        public virtual void AddEntityPropertiesConfiguration([NotNull] EntityConfiguration entityConfiguration)
        {
            Check.NotNull(entityConfiguration, nameof(entityConfiguration));

            foreach (var property in ModelUtilities.OrderedProperties(entityConfiguration.EntityType))
            {
                var propertyConfiguration = new PropertyConfiguration(entityConfiguration, property);
                AddPropertyConfiguration(propertyConfiguration);
                entityConfiguration.PropertyConfigurations.Add(propertyConfiguration);
            }
        }
Exemplo n.º 5
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)));
            }
        }
Exemplo n.º 6
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)));
            }
        }
        public virtual PropertyConfiguration GetOrAddPropertyConfiguration(
            [NotNull] EntityConfiguration entityConfiguration, [NotNull] Property property)
        {
            Check.NotNull(entityConfiguration, nameof(entityConfiguration));
            Check.NotNull(property, nameof(property));

            var propertyConfiguration = FindPropertyConfiguration(property);
            if (propertyConfiguration == null)
            {
                propertyConfiguration = new PropertyConfiguration(entityConfiguration, property);
                PropertyConfigurations.Add(propertyConfiguration);
            }

            return propertyConfiguration;
        }
        public virtual PropertyConfiguration GetOrAddPropertyConfiguration(
            [NotNull] EntityConfiguration entityConfiguration, [NotNull] Property property)
        {
            Check.NotNull(entityConfiguration, nameof(entityConfiguration));
            Check.NotNull(property, nameof(property));

            var propertyConfiguration = FindPropertyConfiguration(property);

            if (propertyConfiguration == null)
            {
                propertyConfiguration = new PropertyConfiguration(entityConfiguration, property);
                PropertyConfigurations.Add(propertyConfiguration);
            }

            return(propertyConfiguration);
        }
Exemplo n.º 9
0
        public virtual void AddMaxLengthConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (((Property)propertyConfiguration.Property).GetMaxLength().HasValue)
            {
                var maxLengthLiteral =
                    CSharpUtilities.GenerateLiteral(
                        ((Property)propertyConfiguration.Property).GetMaxLength().Value);
                propertyConfiguration.FluentApiConfigurations.Add(
                    new FluentApiConfiguration(nameof(PropertyBuilder.HasMaxLength), maxLengthLiteral)
                {
                    HasAttributeEquivalent = true
                });
                propertyConfiguration.AttributeConfigurations.Add(
                    new AttributeConfiguration(nameof(MaxLengthAttribute), maxLengthLiteral));
            }
        }
Exemplo n.º 10
0
        public virtual void AddRequiredConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (!propertyConfiguration.Property.IsNullable &&
                propertyConfiguration.Property.ClrType.IsNullableType())
            {
                var entityKeyProperties =
                    ((EntityType)propertyConfiguration.EntityConfiguration.EntityType)
                    .FindPrimaryKey()?.Properties
                    ?? Enumerable.Empty <Property>();
                if (!entityKeyProperties.Contains(propertyConfiguration.Property))
                {
                    propertyConfiguration.FluentApiConfigurations.Add(
                        new FluentApiConfiguration(nameof(PropertyBuilder.IsRequired))
                    {
                        HasAttributeEquivalent = true
                    });
                    propertyConfiguration.AttributeConfigurations.Add(
                        new AttributeConfiguration(nameof(RequiredAttribute)));
                }
            }
        }
        public virtual void AddEntityPropertiesConfiguration([NotNull] EntityConfiguration entityConfiguration)
        {
            Check.NotNull(entityConfiguration, nameof(entityConfiguration));

            foreach (var property in OrderedProperties(entityConfiguration.EntityType))
            {
                var propertyConfiguration = new PropertyConfiguration(entityConfiguration, property);

                AddPropertyFacetsConfiguration(propertyConfiguration);

                if (propertyConfiguration.FacetConfigurations.Any())
                {
                    entityConfiguration.PropertyConfigurations.Add(propertyConfiguration);
                }
            }
        }
Exemplo n.º 12
0
        public virtual void AddEntityPropertiesConfiguration([NotNull] EntityConfiguration entityConfiguration)
        {
            Check.NotNull(entityConfiguration, nameof(entityConfiguration));

            foreach (var property in ModelUtilities.OrderedProperties(entityConfiguration.EntityType))
            {
                var propertyConfiguration = new PropertyConfiguration(entityConfiguration, property);
                AddPropertyConfiguration(propertyConfiguration);
                entityConfiguration.PropertyConfigurations.Add(propertyConfiguration);
            }
        }