将System.types转换为SMO.DataTypes

将System.types转换为SMO.DataTypes,types,smo,Types,Smo,我有一个项目,通过SMO创建一个从DataTable到SQL表的表 列的数据类型当前未从System.Type转换为SMO.DataType。 我可以通过案例陈述来做到这一点,但我希望有一个更干净的解决方案。可能是涉及TypeDescriptor.GetConverter(targetDataType)的内容 这在System.types和SQL.DataTypes之间工作,但我无法将其转换为SMO.DataTypes 有什么建议或提示吗 TIA我最终使用Case语句来处理转换。工作正常。我最终

我有一个项目,通过SMO创建一个从DataTable到SQL表的表

列的数据类型当前未从System.Type转换为SMO.DataType。 我可以通过案例陈述来做到这一点,但我希望有一个更干净的解决方案。可能是涉及TypeDescriptor.GetConverter(targetDataType)的内容

这在System.types和SQL.DataTypes之间工作,但我无法将其转换为SMO.DataTypes

有什么建议或提示吗


TIA

我最终使用Case语句来处理转换。工作正常。

我最终使用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;
    }
public静态SqlDbType映射到sqltype(字符串CLRTypeName)
{
字符串[]t=CLRTypeName.Split('.');
对于(inti=0;i我也是这样做的。
我没有治疗所有的病例,我在需要时补充说。
我的方法不是很干净

    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;
    }
public静态SqlDbType映射到sqltype(字符串CLRTypeName)
{
字符串[]t=CLRTypeName.Split('.');

对于(int i=0;我的问题是关于从
System.Type
转换到
SMO.DataType
not
SqlDbType
问题是关于从
System.Type
转换到
SMO.DataType
not
SqlDbType