C# 在System.Data.SqlDbType和Microsoft.SqlServer.Management.Smo.SqlDataType之间转换
给定一个实例,如何将其转换为实例,反之亦然 枚举不匹配C# 在System.Data.SqlDbType和Microsoft.SqlServer.Management.Smo.SqlDataType之间转换,c#,sql-server,enums,C#,Sql Server,Enums,给定一个实例,如何将其转换为实例,反之亦然 枚举不匹配 如果名字匹配,可能是这样的吗 System.Data.SqlDbType otherEnumTypeValue = System.Data.SqlDbType.Xml; Microsoft.SqlServer.Management.Smo.SqlDataTypeconverted = (Microsoft.SqlServer.Management.Smo.SqlDataType)Enum.Parse(typeof(M
如果名字匹配,可能是这样的吗
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());
如果名字匹配的话,可能是这样的
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());
使用Bala R的枚举解析代码以及不支持的转换的特殊情况,将SqlDataType转换为SqlDbType
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和需要特殊处理的结构化,则应该更简单。使用Bala R的枚举解析代码将SqlDataType转换为SqlDbType,再加上不支持转换的特殊情况
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和需要特殊处理的结构化方法。我认为您必须使用切换案例编写自己的两个方法。我认为您必须使用切换案例编写自己的两个方法。谢谢,这将处理核心案例。其余的我需要根据转换的方向来处理。谢谢,这将处理核心案例。其余的我需要根据转换的方向来处理。