سؤال

لدي مشروع يقوم بإنشاء جدول من DataTable إلى جدول SQL عبر SMO.

لا تتحول البيانات إلى الأعمدة حاليا من system.type إلى smo.datatype. يمكنني القيام بذلك عبر بيان الحالة لكني كنت آمل في حل نظيف. ربما شيء ينطوي على typedescriptor.getconverter (الهدف المستهدف).

يعمل هذا بين system.types و sql.dattypes ولكن لا يمكنني الحصول عليه للتحويل إلى smo.dattypes.

أي اقتراحات أو نصائح؟

تيا

هل كانت مفيدة؟

المحلول

انتهى بي الأمر باستخدام بيان الحالة للتعامل مع التحويل. يعمل موافق.

نصائح أخرى

فعلت بهذه الطريقة أيضا. لم أعمل كل الحالات، وأضيف بعد ذلك عندما أحتاج إليه. ميثود بلدي ليست نظيفة جدا ...

    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;
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top