private static string GetNewDataType(List<DataTypeMapping> mappings, string dataType) { string cleanDataType = dataType.Split('(')[0]; string newDataType = cleanDataType; bool hasPrecisionScale = false; if(cleanDataType != dataType) { hasPrecisionScale = true; } DataTypeMapping mapping = GetDataTypeMapping(mappings, cleanDataType); if(mapping!=null) { DataTypeMappingTarget targetDataType = mapping.Tareget; newDataType = targetDataType.Type; if (!hasPrecisionScale && !string.IsNullOrEmpty(targetDataType.Precision) && !string.IsNullOrEmpty(targetDataType.Scale)) { newDataType += $"({targetDataType.Precision},{targetDataType.Scale})"; } else if(hasPrecisionScale) { newDataType += "(" + dataType.Split('(')[1]; } } return newDataType; }
private string GetNewDataType(List<DataTypeMapping> mappings, string dataType) { DatabaseType sourceDbType = this.sourceDbInterpreter.DatabaseType; DatabaseType targetDbType = this.targetDbInterpreter.DatabaseType; string cleanDataType = dataType.Split('(')[0]; string newDataType = cleanDataType; bool hasPrecisionScale = false; if (cleanDataType != dataType) { hasPrecisionScale = true; } string upperTypeName = newDataType.ToUpper(); DataTypeMapping mapping = this.GetDataTypeMapping(mappings, cleanDataType); if (mapping != null) { DataTypeMappingTarget targetDataType = mapping.Tareget; newDataType = targetDataType.Type; if (targetDbType == DatabaseType.MySql) { if (upperTypeName == "INT") { newDataType = "SIGNED"; } else if (upperTypeName == "FLOAT" || upperTypeName == "DOUBLE" || upperTypeName == "NUMBER") { newDataType = "DECIMAL"; } } if (!hasPrecisionScale && !string.IsNullOrEmpty(targetDataType.Precision) && !string.IsNullOrEmpty(targetDataType.Scale)) { newDataType += $"({targetDataType.Precision},{targetDataType.Scale})"; } else if (hasPrecisionScale) { newDataType += "(" + dataType.Split('(')[1]; } } else { if (sourceDbType == DatabaseType.MySql) { if (upperTypeName == "SIGNED") { if (targetDbType == DatabaseType.SqlServer) { newDataType = "DECIMAL"; } else if (targetDbType == DatabaseType.Oracle) { newDataType = "NUMBER"; } } } } return newDataType; }