public virtual void AddValueGeneratedFacetConfiguration(
            [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.ValueGeneratedOnAddProperty(
                        new List <Property> {
                    (Property)propertyConfiguration.Property
                },
                        (EntityType)propertyConfiguration.EntityConfiguration.EntityType) == null)
                {
                    propertyConfiguration.AddFacetConfiguration(
                        new FacetConfiguration("ValueGeneratedOnAdd()"));
                }

                break;

            case ValueGenerated.OnAddOrUpdate:
                propertyConfiguration.AddFacetConfiguration(new FacetConfiguration("ValueGeneratedOnAddOrUpdate()"));
                break;
            }
        }
Beispiel #2
0
        public virtual void AddValueGeneratedFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            var valueGenerated = propertyConfiguration.Property.ValueGenerated;

            switch (valueGenerated)
            {
            case ValueGenerated.OnAdd:
                propertyConfiguration.AddFacetConfiguration(new FacetConfiguration("ValueGeneratedOnAdd()"));
                break;

            case ValueGenerated.OnAddOrUpdate:
                propertyConfiguration.AddFacetConfiguration(new FacetConfiguration("ValueGeneratedOnAddOrUpdate()"));
                break;
            }
        }
Beispiel #3
0
        public virtual void AddDefaultExpressionFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (propertyConfiguration.Property.Relational().DefaultExpression != null)
            {
                propertyConfiguration.AddFacetConfiguration(
                    new FacetConfiguration(
                        string.Format(CultureInfo.InvariantCulture,
                                      "DefaultExpression({0})",
                                      CSharpUtilities.Instance.DelimitString(
                                          propertyConfiguration.Property.Relational().DefaultExpression))));
            }
        }
Beispiel #4
0
        public virtual void AddDefaultValueFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (propertyConfiguration.Property.Relational().DefaultValue != null)
            {
                propertyConfiguration.AddFacetConfiguration(
                    new FacetConfiguration(
                        string.Format(CultureInfo.InvariantCulture,
                                      "DefaultValue({0})",
                                      CSharpUtilities.Instance.GenerateLiteral(
                                          (dynamic)propertyConfiguration.Property.Relational().DefaultValue))));
            }
        }
Beispiel #5
0
        public virtual void AddStoreGeneratedPatternFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (propertyConfiguration.Property.StoreGeneratedPattern != StoreGeneratedPattern.None)
            {
                propertyConfiguration.AddFacetConfiguration(
                    new FacetConfiguration(
                        string.Format(CultureInfo.InvariantCulture,
                                      "StoreGeneratedPattern({0})",
                                      CSharpUtilities.Instance.GenerateLiteral(
                                          propertyConfiguration.Property.StoreGeneratedPattern))));
            }
        }
Beispiel #6
0
        public virtual void AddMaxLengthFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (((Property)propertyConfiguration.Property).GetMaxLength().HasValue)
            {
                propertyConfiguration.AddFacetConfiguration(
                    new FacetConfiguration(
                        string.Format(CultureInfo.InvariantCulture,
                                      "MaxLength({0})",
                                      CSharpUtilities.Instance.GenerateLiteral(
                                          ((Property)propertyConfiguration.Property).GetMaxLength().Value))));
            }
        }
        public virtual void AddUseIdentityFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (propertyConfiguration.Property.SqlServer().ValueGenerationStrategy.HasValue &&
                SqlServerValueGenerationStrategy.Identity
                == propertyConfiguration.Property.SqlServer().ValueGenerationStrategy.Value)
            {
                propertyConfiguration.AddFacetConfiguration(
                    new FacetConfiguration(
                        "ForSqlServer",
                        "UseIdentity()"));
            }
        }
        public virtual void AddDefaultExpressionFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (ExtensionsProvider.For(propertyConfiguration.Property).GeneratedValueSql != null)
            {
                propertyConfiguration.AddFacetConfiguration(
                    new FacetConfiguration(
                        string.Format(CultureInfo.InvariantCulture,
                                      "HasDefaultValueSql({0})",
                                      CSharpUtilities.Instance.DelimitString(
                                          ExtensionsProvider.For(propertyConfiguration.Property).GeneratedValueSql))));
            }
        }
        public virtual void AddColumnTypeFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (ExtensionsProvider.For(propertyConfiguration.Property).ColumnType != null)
            {
                propertyConfiguration.AddFacetConfiguration(
                    new FacetConfiguration(
                        string.Format(CultureInfo.InvariantCulture,
                                      "HasColumnType({0})",
                                      CSharpUtilities.Instance.DelimitString(
                                          ExtensionsProvider.For(propertyConfiguration.Property).ColumnType))));
            }
        }
Beispiel #10
0
        public virtual void AddColumnNameFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (propertyConfiguration.Property.Relational().Column != null &&
                propertyConfiguration.Property.Relational().Column != propertyConfiguration.Property.Name)
            {
                propertyConfiguration.AddFacetConfiguration(
                    new FacetConfiguration(
                        string.Format(CultureInfo.InvariantCulture,
                                      "Column({0})",
                                      CSharpUtilities.Instance.DelimitString(
                                          propertyConfiguration.Property.Relational().Column))));
            }
        }
Beispiel #11
0
        public virtual void AddRequiredFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            if (!propertyConfiguration.Property.IsNullable)
            {
                var entityKeyProperties =
                    ((EntityType)propertyConfiguration.EntityConfiguration.EntityType)
                    .FindPrimaryKey()?.Properties
                    ?? Enumerable.Empty <Property>();
                if (!entityKeyProperties.Contains(propertyConfiguration.Property))
                {
                    propertyConfiguration.AddFacetConfiguration(
                        new FacetConfiguration("Required()"));
                }
            }
        }
Beispiel #12
0
        public override void AddValueGeneratedFacetConfiguration(
            [NotNull] PropertyConfiguration propertyConfiguration)
        {
            Check.NotNull(propertyConfiguration, nameof(propertyConfiguration));

            // If this property is the single integer primary key on the EntityType then
            // KeyConvention assumes ValueGeneratedOnAdd(). If the underlying column does
            // not have Identity set then we need to set to ValueGeneratedNever() to
            // override this behavior.
            if (propertyConfiguration.Property.SqlServer().IdentityStrategy == null &&
                _keyConvention.ValueGeneratedOnAddProperty(
                    new List <Property> {
                (Property)propertyConfiguration.Property
            },
                    (EntityType)propertyConfiguration.EntityConfiguration.EntityType) != null)
            {
                propertyConfiguration.AddFacetConfiguration(
                    new FacetConfiguration("ValueGeneratedNever()"));
            }
            else
            {
                base.AddValueGeneratedFacetConfiguration(propertyConfiguration);
            }
        }