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); } }