Exemple #1
0
        public void UpdateColumnInfoOnModelCreating(IDbSetInfo dbSetInfo, ColumnInfo columnInfo,
                                                    EntityTypeBuilder entityBuilder,
                                                    IShamanLogger logger)
        {
            const string source = nameof(DefaultValueColumnInfoUpdateService) + "." + nameof(UpdateColumnInfoOnModelCreating);
            var          dv     = columnInfo.DefaultValue;

            if (columnInfo.DefaultValue == null)
            {
                return;
            }
            string action;

            switch (dv.Kind)
            {
            case ValueInfoKind.Clr:
                action = $"{columnInfo.PropertyName}.HasDefaultValue(\"{columnInfo.DefaultValue.ClrValue}\")";
                logger.LogCalling(source, dbSetInfo.EntityType, action);
                entityBuilder.Property(columnInfo.PropertyName).HasDefaultValue(columnInfo.DefaultValue.ClrValue);
                break;

            case ValueInfoKind.Sql:
                action = $"{columnInfo.PropertyName}.HasDefaultValueSql(\"{columnInfo.DefaultValue.SqlValue}\")";
                logger.LogCalling(source, dbSetInfo.EntityType, action);
                entityBuilder.Property(columnInfo.PropertyName).HasDefaultValueSql(columnInfo.DefaultValue.SqlValue);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public void UpdateColumnInfoOnModelCreating(IDbSetInfo dbSetInfo,
                                                    ColumnInfo columnInfo,
                                                    EntityTypeBuilder entityBuilder,
                                                    IShamanLogger logger)
        {
            const string source = nameof(SqlServerReflectionService) + "." + nameof(UpdateColumnInfoOnModelCreating);

            if (!UseDataType)
            {
                return;
            }
            if (columnInfo.ClrProperty?.PropertyType != typeof(string))
            {
                return;
            }
            var modelInfo = dbSetInfo.Model;
            var collation = GetCollation(columnInfo, dbSetInfo, modelInfo);

            if (string.IsNullOrEmpty(collation))
            {
                logger.Log(source, $"Column {dbSetInfo.GetSqlTableName()}.{columnInfo.PropertyName} has no SQL collation info");
                return;
            }

            var isUnicode   = columnInfo.IsUnicode ?? modelInfo.DefaultIsUnicodeText;
            var sqlDataType = SqlServerFixerService.MkStringType(isUnicode, columnInfo.MaxLength, collation);
            var action      = $"{columnInfo.PropertyName}.HasColumnType(\"{sqlDataType}\")";

            logger.LogCalling(source, dbSetInfo.EntityType, action);
            entityBuilder.Property(columnInfo.PropertyName).HasColumnType(sqlDataType);
        }
Exemple #3
0
        public void UpdateColumnInfoOnModelCreating(IDbSetInfo dbSetInfo, ColumnInfo columnInfo,
                                                    EntityTypeBuilder entityBuilder,
                                                    IShamanLogger logger)
        {
            const string name = nameof(UnicodeColumnInfoUpdateService) + "." + nameof(UpdateColumnInfoOnModelCreating);

            if (columnInfo.IsUnicode == null)
            {
                return;
            }
            var action = $"IsUnicode({columnInfo.IsUnicode})";

            logger.LogCalling(name, dbSetInfo.EntityType, action);
            entityBuilder.Property(columnInfo.PropertyName).IsUnicode(columnInfo.IsUnicode.Value);
        }
Exemple #4
0
        public void UpdateColumnInfoOnModelCreating(IDbSetInfo dbSetInfo, ColumnInfo columnInfo,
                                                    EntityTypeBuilder entityBuilder,
                                                    IShamanLogger logger)
        {
            const string name = nameof(DecimalPlacesColumnInfoUpdateService) + "." + nameof(UpdateColumnInfoOnModelCreating);

            if (columnInfo.MaxLength == null || columnInfo.DecimalPlaces == null)
            {
                return;
            }
            var type   = $"decimal({columnInfo.MaxLength},{columnInfo.DecimalPlaces})";
            var action = $"{columnInfo.PropertyName}.HasColumnType(\"{type}\")";

            logger.LogCalling(name, dbSetInfo.EntityType, action);
            entityBuilder.Property(columnInfo.PropertyName).HasColumnType(type);
        }