public override void Apply(ConventionPrimitivePropertyConfiguration configuration, UniqueIndexAttribute attribute)
 {
     if (string.IsNullOrWhiteSpace(attribute.Name))
     {
         configuration.HasColumnAnnotation("Index",
                                           new IndexAnnotation(new IndexAttribute()
         {
             IsUnique = true
         }));
     }
     else if (attribute.Order < 0)
     {
         configuration.HasColumnAnnotation("Index",
                                           new IndexAnnotation(new IndexAttribute(attribute.Name)
         {
             IsUnique = true
         }));
     }
     else
     {
         configuration.HasColumnAnnotation("Index",
                                           new IndexAnnotation(new IndexAttribute(attribute.Name, attribute.Order)
         {
             IsUnique = true
         }));
     }
 }
Пример #2
0
        /// <inheritdoc/>
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, ConcurrencyCheckAttribute attribute)
        {
            Check.NotNull(configuration, "configuration");
            Check.NotNull(attribute, "attribute");

            configuration.IsConcurrencyToken();
        }
Пример #3
0
 public override void Apply(ConventionPrimitivePropertyConfiguration configuration, SqlColumnTypeAttribute attribute)
 {
     if (!string.IsNullOrEmpty(attribute.ColumnType))
     {
         configuration.HasColumnType(attribute.ColumnType);
     }
 }
Пример #4
0
 public override void Apply(ConventionPrimitivePropertyConfiguration configuration, DataTypeAttribute attribute)
 {
     if (attribute.DataType == DataType.Date)
     {
         configuration.HasColumnType("Date");
     }
 }
Пример #5
0
        /// <inheritdoc/>
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, DatabaseGeneratedAttribute attribute)
        {
            Check.NotNull(configuration, "configuration");
            Check.NotNull(attribute, "attribute");

            configuration.HasDatabaseGeneratedOption(attribute.DatabaseGeneratedOption);
        }
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, DatabaseGeneratedAttribute attribute)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }
            if (attribute == null)
            {
                throw new ArgumentNullException("attribute");
            }

            System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption option;
            switch (attribute.DatabaseGeneratedOption)
            {
            case DatabaseGeneratedOption.Identity:
                option = System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity;
                break;

            case DatabaseGeneratedOption.Computed:
                option = System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed;
                break;

            default:
                option = System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None;
                break;
            }

            configuration.HasDatabaseGeneratedOption(option);
        }
Пример #7
0
 /// <summary>配置属性类型</summary>
 private void ConfigureProperty(ConventionPrimitivePropertyConfiguration propertyConfiguration)
 {
     if (!propertyConfiguration.ClrPropertyInfo.HasAttribute <ColumnAttribute>())
     {
         propertyConfiguration.HasColumnName(propertyConfiguration.ClrPropertyInfo.Name.ToUpperInvariant());
     }
 }
Пример #8
0
        /// <inheritdoc/>
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, TimestampAttribute attribute)
        {
            Check.NotNull(configuration, "configuration");
            Check.NotNull(attribute, "attribute");

            configuration.IsRowVersion();
        }
Пример #9
0
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, MaxLengthAttribute attribute)
        {
            var memberInfo = configuration.ClrPropertyInfo;

            if (attribute.Length == 0 || attribute.Length < MaxLengthIndicator)
            {
                throw new ArgumentException("MaxLength must be a positive number or -1.");
            }

            if (attribute.Length == MaxLengthIndicator)
            {
                configuration.IsMaxLength();
            }
            else
            {
                var minAttr = memberInfo.GetCustomAttributes <MinLengthAttribute>(false).FirstOrDefault();
                if (minAttr != null)
                {
                    configuration.IsFixedLength().HasMaxLength(attribute.Length);
                }
                else
                {
                    configuration.HasMaxLength(attribute.Length);
                }
            }
        }
        /// <inheritdoc/>
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, RequiredAttribute attribute)
        {
            Check.NotNull(configuration, "configuration");
            Check.NotNull(attribute, "attribute");

            configuration.IsRequired();
        }
Пример #11
0
 /// <inheritdoc />
 public override void Apply(
     ConventionPrimitivePropertyConfiguration configuration,
     DatabaseGeneratedAttribute attribute)
 {
     Check.NotNull <ConventionPrimitivePropertyConfiguration>(configuration, nameof(configuration));
     Check.NotNull <DatabaseGeneratedAttribute>(attribute, nameof(attribute));
     configuration.HasDatabaseGeneratedOption(attribute.DatabaseGeneratedOption);
 }
Пример #12
0
 /// <inheritdoc />
 public override void Apply(
     ConventionPrimitivePropertyConfiguration configuration,
     ConcurrencyCheckAttribute attribute)
 {
     Check.NotNull <ConventionPrimitivePropertyConfiguration>(configuration, nameof(configuration));
     Check.NotNull <ConcurrencyCheckAttribute>(attribute, nameof(attribute));
     configuration.IsConcurrencyToken();
 }
Пример #13
0
 /// <inheritdoc />
 public override void Apply(
     ConventionPrimitivePropertyConfiguration configuration,
     RequiredAttribute attribute)
 {
     Check.NotNull <ConventionPrimitivePropertyConfiguration>(configuration, nameof(configuration));
     Check.NotNull <RequiredAttribute>(attribute, nameof(attribute));
     configuration.IsRequired();
 }
Пример #14
0
 /// <inheritdoc />
 public override void Apply(
     ConventionPrimitivePropertyConfiguration configuration,
     TimestampAttribute attribute)
 {
     Check.NotNull <ConventionPrimitivePropertyConfiguration>(configuration, nameof(configuration));
     Check.NotNull <TimestampAttribute>(attribute, nameof(attribute));
     configuration.IsRowVersion();
 }
Пример #15
0
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, TimeAttribute attribute)
        {
            if (attribute.Precision < 0 || attribute.Precision > 7)
            {
                throw new InvalidOperationException("Precision must be between 0 and 7.");
            }

            configuration.HasPrecision(attribute.Precision);
        }
Пример #16
0
        private static void ConfigureTimestamp(ConventionPrimitivePropertyConfiguration valConventionPrimitivePropertyConfiguration)
        {
            var vAttributes = valConventionPrimitivePropertyConfiguration.ClrPropertyInfo.GetCustomAttributes(typeof(TimestampAttribute), false);

            if (vAttributes.Length > 0 && valConventionPrimitivePropertyConfiguration.ClrPropertyInfo.Name.StartsWith("Timestamp", StringComparison.OrdinalIgnoreCase))
            {
                valConventionPrimitivePropertyConfiguration.IsRowVersion();
            }
        }
Пример #17
0
        private static void ConfigureVarchar(ConventionPrimitivePropertyConfiguration valConventionPrimitivePropertyConfiguration)
        {
            var vAttributes = valConventionPrimitivePropertyConfiguration.ClrPropertyInfo.GetCustomAttributes(typeof(VarcharAttribute), false);

            if (vAttributes.Length > 0)
            {
                valConventionPrimitivePropertyConfiguration.HasColumnType("varchar");
            }
        }
Пример #18
0
        private string GetColumnName(ConventionPrimitivePropertyConfiguration type)
        {
            var columnName = type.ClrPropertyInfo.Name;

            if (useSnakeCase)
            {
                columnName = columnName.ToSnakeCase();
            }
            return(columnName.ToUpperInvariant());
        }
Пример #19
0
        private string GetColumnName(ConventionPrimitivePropertyConfiguration type)
        {
            var result = type.ClrPropertyInfo.Name;

            if (convertToUnderscore)
            {
                result = ToUnderscoreCase(result);
            }

            return(result.ToUpperInvariant());
        }
Пример #20
0
 public override void Apply(ConventionPrimitivePropertyConfiguration configuration, DecimalPrecisionAttribute attribute)
 {
     if (attribute.Precision < 1 || attribute.Precision > 38)
     {
         throw new InvalidOperationException("Precision must be between 1 and 38.");
     }
     if (attribute.Scale > attribute.Precision)
     {
         throw new InvalidOperationException("Scale must be between 0 and the Precision value.");
     }
     configuration.HasPrecision(attribute.Precision, attribute.Scale);
 }
#pragma warning disable CS1591 // 缺少对公共可见类型或成员“DecimalPrecisionAttributeConvention.Apply(ConventionPrimitivePropertyConfiguration, DecimalPrecisionAttribute)”的 XML 注释
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, DecimalPrecisionAttribute attribute)
#pragma warning restore CS1591 // 缺少对公共可见类型或成员“DecimalPrecisionAttributeConvention.Apply(ConventionPrimitivePropertyConfiguration, DecimalPrecisionAttribute)”的 XML 注释
        {
            if (attribute.Precision < 1 || attribute.Precision > 38)
            {
                throw new InvalidOperationException("Precision must be between 1 and 38.");
            }
            if (attribute.Scale > attribute.Precision)
            {
                throw new InvalidOperationException("Scale must be between 0 and the Precision value.");
            }
            configuration.HasPrecision(attribute.Precision, attribute.Scale);
        }
Пример #22
0
 /// <inheritdoc />
 public override void Apply(
     ConventionPrimitivePropertyConfiguration configuration,
     StringLengthAttribute attribute)
 {
     Check.NotNull <ConventionPrimitivePropertyConfiguration>(configuration, nameof(configuration));
     Check.NotNull <StringLengthAttribute>(attribute, nameof(attribute));
     if (attribute.MaximumLength < 1)
     {
         PropertyInfo clrPropertyInfo = configuration.ClrPropertyInfo;
         throw Error.StringLengthAttributeConvention_InvalidMaximumLength((object)clrPropertyInfo.Name, (object)clrPropertyInfo.ReflectedType);
     }
     configuration.HasMaxLength(attribute.MaximumLength);
 }
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, DecimalPrecisionAttribute attribute)
        {
            if (attribute.Precision < MIN_PRECISION || attribute.Precision > MAX_PRECISION)
            {
                throw new InvalidOperationException($"Precision must be between {MIN_PRECISION} and {MAX_PRECISION}.");
            }

            if (attribute.Scale > attribute.Precision)
            {
                throw new InvalidOperationException("Scale must be between 0 and the Precision value.");
            }

            configuration.HasPrecision(attribute.Precision, attribute.Scale);
        }
Пример #24
0
        public static ConventionPrimitivePropertyConfiguration IsRequired(this ConventionPrimitivePropertyConfiguration configuration, bool required = true)
        {
            Ensure.NotNull(configuration, nameof(configuration));

            if (required)
            {
                configuration.IsRequired();
            }
            else
            {
                configuration.IsOptional();
            }

            return(configuration);
        }
        /// <inheritdoc/>
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, StringLengthAttribute attribute)
        {
            Check.NotNull(configuration, "configuration");
            Check.NotNull(attribute, "attribute");

            if (attribute.MaximumLength < 1)
            {
                var memberInfo = configuration.ClrPropertyInfo;
                throw Error.StringLengthAttributeConvention_InvalidMaximumLength(
                          memberInfo.Name, memberInfo.ReflectedType);
            }

            // Set the length if the string configuration's maxlength is not yet set
            configuration.HasMaxLength(attribute.MaximumLength);
        }
Пример #26
0
 private void ConfigurationAction(ConventionPrimitivePropertyConfiguration obj)
 {
     if (obj.ClrPropertyInfo.Name == "Id")
     {
         obj.IsKey();
         obj.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
     }
     else if (obj.ClrPropertyInfo.PropertyType == typeof(string))
     {
         obj.IsRequired();
         //if (obj.ClrPropertyInfo.GetCustomAttributes(typeof(MaxLengthAttribute), false).Length == 0)
         //{
         //    obj.HasMaxLength(50);
         //}
     }
 }
Пример #27
0
        private static void ConfigureDecimal(ConventionPrimitivePropertyConfiguration valConventionPrimitivePropertyConfiguration)
        {
            byte vPrecision  = 18;
            byte vScale      = 2;
            var  vAttributes = valConventionPrimitivePropertyConfiguration.ClrPropertyInfo.GetCustomAttributes(typeof(DecimalAttribute), false);

            if (vAttributes.Length > 0)
            {
                foreach (DecimalAttribute vAttribute in vAttributes)
                {
                    vPrecision = vAttribute.Precision;
                    vScale     = vAttribute.Scale;
                }
            }
            valConventionPrimitivePropertyConfiguration.HasPrecision(vPrecision, vScale);
        }
        public static ConventionPrimitivePropertyConfiguration IsRequired(this ConventionPrimitivePropertyConfiguration configuration, bool required = true)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            if (required)
            {
                configuration.IsRequired();
            }
            else
            {
                configuration.IsOptional();
            }

            return(configuration);
        }
Пример #29
0
        /// <inheritdoc/>
        public override void Apply(ConventionPrimitivePropertyConfiguration configuration, ColumnAttribute attribute)
        {
            Check.NotNull(configuration, "configuration");
            Check.NotNull(attribute, "attribute");

            if (!string.IsNullOrWhiteSpace(attribute.Name))
            {
                configuration.HasColumnName(attribute.Name);
            }

            if (!string.IsNullOrWhiteSpace(attribute.TypeName))
            {
                configuration.HasColumnType(attribute.TypeName);
            }

            if (attribute.Order >= 0)
            {
                configuration.HasColumnOrder(attribute.Order);
            }
        }
Пример #30
0
 /// <inheritdoc />
 public override void Apply(
     ConventionPrimitivePropertyConfiguration configuration,
     ColumnAttribute attribute)
 {
     Check.NotNull <ConventionPrimitivePropertyConfiguration>(configuration, nameof(configuration));
     Check.NotNull <ColumnAttribute>(attribute, nameof(attribute));
     if (!string.IsNullOrWhiteSpace(attribute.Name))
     {
         configuration.HasColumnName(attribute.Name);
     }
     if (!string.IsNullOrWhiteSpace(attribute.TypeName))
     {
         configuration.HasColumnType(attribute.TypeName);
     }
     if (attribute.Order < 0)
     {
         return;
     }
     configuration.HasColumnOrder(attribute.Order);
 }