예제 #1
0
        static ColumnInfo CreateColumn(DataRow row)
        {
            var columnName = row["COLUMN_NAME"].ToString();

            #region var dataType = row["DATA_TYPE"
            var dataType = row["DATA_TYPE"].ToString().ToUpperEN();

            dataType = ReadDataType(row, dataType, columnName);
            #endregion

            var isIdentity = row["IsIdentity"] + "" == "True";

            var isNullable = row["IS_NULLABLE"].ToString() == "YES";

            return(new ColumnInfo
            {
                ColumnName = columnName,
                DataType = dataType,
                IsIdentity = isIdentity,
                IsNullable = isNullable,
                SqlDbType = SqlDbTypeMap.GetSqlDbType(dataType),
                DotNetType = SqlDbTypeMap.GetDotNetType(dataType, isNullable),
                SqlReaderMethod = SqlDbTypeMap.GetSqlReaderMethod(dataType, isNullable)
            });
        }
        /// <summary>
        ///     Fills the specified item.
        /// </summary>
        static void Fill(CustomSqlInfoResult item)
        {
            item.NameInDotnet = item.Name.ToContractName();

            item.DataTypeInDotnet = GetDataTypeInDotnet(item.DataType, item.IsNullable);

            if (item.Name.EndsWith("_FLAG", StringComparison.OrdinalIgnoreCase))
            {
                var sqlDataTypeIsChar = item.DataType.EndsWith("char", StringComparison.OrdinalIgnoreCase);
                if (!sqlDataTypeIsChar)
                {
                    throw new InvalidOperationException($"{item.Name} column should be char.");
                }

                item.DataTypeInDotnet = DotNetTypeName.DotNetBool;
                item.SqlReaderMethod  = SqlReaderMethods.GetBooleanValue;
                if (item.IsNullable)
                {
                    item.DataTypeInDotnet = DotNetTypeName.GetDotNetNullableType(DotNetTypeName.DotNetBool);
                    item.SqlReaderMethod  = SqlReaderMethods.GetBooleanNullableValueFromChar;
                }
            }
            else
            {
                item.SqlReaderMethod = SqlDbTypeMap.GetSqlReaderMethod(item.DataType.ToUpperEN(), item.IsNullable);
            }
        }