Преобразование между System.Data.SqlDbType и Microsoft.SqlServer.Management.Smo.SqlDataType - PullRequest
1 голос
/ 01 июня 2011

При наличии экземпляра System.Data.SqlDbType как я могу преобразовать его в экземпляр Microsoft.SqlServer.Management.Smo.SqlDataType и наоборот?

Перечисления не совпадают.

Comparing enums

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

Примерно так, если имена совпадают, может быть?

 System.Data.SqlDbType otherEnumTypeValue = System.Data.SqlDbType.Xml;
 Microsoft.SqlServer.Management.Smo.SqlDataTypeconverted = 
         (Microsoft.SqlServer.Management.Smo.SqlDataType)Enum.Parse(typeof(Microsoft.SqlServer.Management.Smo.SqlDataType), otherEnumTypeValue.ToString());
1 голос
/ 01 июня 2011

Преобразование из SqlDataType в SqlDbType с использованием кода синтаксического анализа перечисления Bala R плюс особые случаи для неподдерживаемых преобразований.

private static SqlDbType ConvertSqlTypeEnum(SqlDataType sqlDataType)
        {
            SqlDbType sqlDbType;
            switch (sqlDataType)
            {
                case SqlDataType.UserDefinedType:
                    sqlDbType = System.Data.SqlDbType.Udt;
                    break;
                case SqlDataType.None:
                case SqlDataType.NVarCharMax:
                case SqlDataType.UserDefinedDataType:
                case SqlDataType.VarBinaryMax:
                case SqlDataType.VarCharMax:
                case SqlDataType.SysName:
                case SqlDataType.Numeric:
                case SqlDataType.UserDefinedTableType:
                case SqlDataType.HierarchyId:
                case SqlDataType.Geometry:
                case SqlDataType.Geography:
                    throw new NotSupportedException("Unable to convert to SqlDbType:" + sqlDataType);
                default:
                    sqlDbType = (SqlDbType)Enum.Parse(typeof(SqlDbType), sqlDataType.ToString());
                    break;
            }
            return sqlDbType;
        }

Обратное должно быть проще, только с Udt и структурированным, требующим особой обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...