Beispiel #1
0
        /// <summary>
        /// Converts the <see cref="OracleTableMetadata"/> into a .NET type name.
        /// </summary>
        /// <param name="metadata">The metadata.</param>
        /// <remarks>
        /// Reference: “Oracle to .NET type mapping” [https://www.devart.com/dotconnect/oracle/docs/DataTypeMapping.html]
        /// </remarks>
        public static string ToDotNetTypeName(this OracleTableMetadata metadata)
        {
            if (metadata == null)
            {
                return(null);
            }
            if (string.IsNullOrEmpty(metadata.DataType))
            {
                return("object");
            }

            var typeName = "string";

            switch (metadata.DataType.ToLowerInvariant())
            {
            case "date":
                typeName = string.Concat("DateTime", metadata.IsNullable.GetValueOrDefault() ? "?" : string.Empty);
                break;

            case "number":
                if (metadata.DataScale.GetValueOrDefault().Equals(0) || (metadata.DataScale == null))
                {
                    typeName = (metadata.DataLength > 22) ? "long" : "int";
                }
                else
                {
                    typeName = (metadata.DataPrecision.GetValueOrDefault() > 16) ? "double" : "decimal";
                }
                typeName = string.Concat(typeName, metadata.IsNullable.GetValueOrDefault() ? "?" : string.Empty);
                break;
            }

            return(typeName);
        }
Beispiel #2
0
        /// <summary>
        /// Converts the <see cref="OracleTableMetadata"/> into a data annotations or <see cref="string.Empty"/>.
        /// </summary>
        /// <param name="metadata">The metadata.</param>
        public static string ToDataAnnotationsOrEmpty(this OracleTableMetadata metadata)
        {
            var annotations = string.Empty;

            if (metadata == null)
            {
                return(annotations);
            }
            if (string.IsNullOrEmpty(metadata.DataType))
            {
                return(annotations);
            }

            var dbTypeName   = metadata.DataType.ToLowerInvariant();
            var isNullable   = metadata.IsNullable.HasValue && metadata.IsNullable.GetValueOrDefault();
            var columnName   = metadata.ColumnName.ToCamelCaseFromUnderscores();
            var newLinePlus4 = "\n    ";

            var maxLengthTemplate = "[MaxLength({0}, ErrorMessage = \"{1} cannot exceed {0} characters.\")]";
            var minLengthTemplate = "[MinLength({0}, ErrorMessage = \"{1} cannot have less than {0} characters.\")]";

            if (dbTypeName.Contains("varchar"))
            {
                annotations = isNullable ?
                              string.Format(string.Concat(maxLengthTemplate, newLinePlus4), metadata.DataLength, columnName)
                    :
                              string.Format(string.Concat("[Required]", newLinePlus4, maxLengthTemplate, newLinePlus4), metadata.DataLength, columnName);
            }
            else if (dbTypeName.Contains("char"))
            {
                annotations = isNullable ?
                              string.Format(string.Concat(maxLengthTemplate, newLinePlus4, minLengthTemplate, newLinePlus4), metadata.DataLength, columnName)
                    :
                              string.Format(string.Concat("[Required]", newLinePlus4, maxLengthTemplate, newLinePlus4, minLengthTemplate, newLinePlus4), metadata.DataLength, columnName);
            }

            return(annotations);
        }