Преобразование System.types в SMO.DataTypes
Вопрос
У меня есть проект, который создает таблицу из DataTable в таблицу SQL через SMO.
Типы данных столбцов в настоящее время не преобразуются из System.Введите в SMO.DataType.Я могу сделать это с помощью инструкции Case, но я надеялся на более чистое решение.Может быть, что-то, связанное с TypeDescriptor.GetConverter(targetDataType).
Это работает между System.types и SQL.DataTypes, но я не могу преобразовать его в SMO.DataTypes.
Есть какие-нибудь предложения или чаевые?
ТИА
Решение
В итоге я использовал оператор Case для обработки преобразования.Работает нормально.
Другие советы
я тоже поступил таким образом.я не рассматривал все случаи, я добавляю тогда, когда мне это нужно.мой метод не очень чистый ...
public static SqlDbType MappingToSQLType(String CLRTypeName)
{
string[] t = CLRTypeName.Split('.');
for (int i = 0; i <= 31; i++)// there is 31 sqldatatypes
{
if (t[1].Equals("Int64") &&
((SqlDbType)i).ToString().ToLower().Equals("bigint"))
return ((SqlDbType)i);
else if (t[1].Equals("Int32") &&
((SqlDbType)i).ToString().ToLower().Equals("int"))
return ((SqlDbType)i);
else if (t[1].Equals("Int16") &&
((SqlDbType)i).ToString().ToLower().Equals("smallint"))
return ((SqlDbType)i);
else if (t[1].Equals("Boolean") &&
((SqlDbType)i).ToString().ToLower().Equals("bit"))
return ((SqlDbType)i);
else if (t[1].Equals("Double") &&
((SqlDbType)i).ToString().ToLower().Equals("float"))
return ((SqlDbType)i);
else if (t[1].Equals("Single") &&
((SqlDbType)i).ToString().ToLower().Equals("real"))
return ((SqlDbType)i);
else if (((SqlDbType)i).ToString().ToLower().Equals(t[1].ToLower()))
return ((SqlDbType)i);
}
return SqlDbType.NVarChar;
}
Не связан с StackOverflow