public static void GetTableStructureByName(SqlString virtualTableName)
    {
        DummyMapper mapper         = new DummyMapper();
        string      classNamespace = typeof(Creative).Namespace;

        Type type = GetTypeByTableName(virtualTableName.Value);

        //Creating Select by Dummy table name
        StringBuilder col = new StringBuilder();

        #region Members
        /*******************************************************/

        Dictionary <string, string> tableStructure = GetSqlTableStructure(type);

        foreach (MemberInfo member in type.GetMembers())
        {
            if (IsRelevant(member))
            {
                string sql_name    = string.Empty;
                string sql_type    = string.Empty;
                string dotNet_name = string.Empty;
                string dotNet_type = string.Empty;
                bool   isEnum      = false;

                //Verify that memeber is class member of Edge.Data.Object
                if (((FieldInfo)(member)).FieldType.FullName.Contains(classNamespace))                //Memeber is class member from Edge.Data.Object
                {
                    //Getting Enum Types
                    if ((((FieldInfo)(member)).FieldType).BaseType == typeof(Enum))
                    {
                        sql_name    = member.Name;
                        sql_type    = tableStructure[mapper.GetMap(type, member.Name)];
                        dotNet_name = member.Name;
                        dotNet_type = ((MemberInfo)(((FieldInfo)(member)).FieldType)).Name;
                        isEnum      = true;
                    }

                    //Getting Types that are not Enum
                    if ((((FieldInfo)(member)).FieldType).BaseType != typeof(Enum))
                    {
                        sql_name    = member.Name + "ID";
                        sql_type    = tableStructure[sql_name];
                        dotNet_name = member.Name + ".ID";
                        dotNet_type = ((MemberInfo)(((FieldInfo)(member)).FieldType)).Name;
                    }
                }

                else
                {
                    sql_name    = mapper.GetMap(type, member.Name);
                    sql_type    = tableStructure[sql_name];
                    dotNet_name = member.Name;
                    dotNet_type = ((MemberInfo)(((FieldInfo)(member)).FieldType)).Name;
                }



                //Creating sql select query
                col.Append(string.Format(" Select '{0}' as 'SQL Name', '{1}' as 'SQL Type', '{2}' as '.Net Name', '{3}' as '.Net Type', '{4}' as 'IsEnum' Union ",
                                         sql_name,
                                         sql_type,
                                         dotNet_name,
                                         dotNet_type,
                                         isEnum
                                         )
                           );
            }
        }

        //Removing last "union string"
        col.Remove(col.Length - 6, 6);

        //Creating SQL command
        SqlCommand cmd = new SqlCommand(col.ToString());

        try
        {
            using (SqlConnection conn = new SqlConnection("Data Source=BI_RND;Initial Catalog=EdgeObjects;Integrated Security=True;Pooling=False"))
            {
                conn.Open();
                cmd.Connection = conn;

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    SqlContext.Pipe.Send(reader);
                }
            }
        }
        catch (Exception e)
        {
            throw new Exception("Could not get table data", e);
        }
        /****************************************************************/

        #endregion
    }
    public static void GetTableStructureByName(SqlString virtualTableName)
    {
        string      sqlAssembly    = typeof(Creative).Assembly.FullName;
        string      classNamespace = typeof(Creative).Namespace;
        DummyMapper mapper         = new DummyMapper();

        #region Getting Type from table name
        /****************************************************************/
        Type type = Type.GetType(string.Format("{0}.{1},{2}", classNamespace, virtualTableName.Value, sqlAssembly));

        if (type == null)
        {
            Int32  metaPropertyID = 0;
            string baseValueType  = GetMetaPropertyBaseValueType(virtualTableName.Value, SqlInt32.Null, out metaPropertyID);

            if (string.IsNullOrEmpty(baseValueType))
            {
                return;
            }

            type = Type.GetType(string.Format("{0}.{1},{2}", classNamespace, baseValueType, sqlAssembly));
        }
        /****************************************************************/
        #endregion

        //Creating Select by Dummy table name
        StringBuilder col = new StringBuilder();
        #region Members
        /*******************************************************/

        Dictionary <string, string> tableStructure = GetTableStructure(type);

        foreach (MemberInfo member in type.GetMembers())
        {
            if (IsRelevant(member))
            {
                //Get Params and types
                string sql_name    = string.Empty;
                string sql_type    = string.Empty;
                string dotNet_name = string.Empty;
                string dotNet_type = string.Empty;
                bool   isEnum      = false;


                if (((FieldInfo)(member)).FieldType.FullName.Contains(classNamespace))                //Memeber is class member from Edge.Data.Object
                {
                    //Getting Enum Types
                    if ((((FieldInfo)(member)).FieldType).BaseType == typeof(Enum))
                    {
                        sql_name    = member.Name;
                        sql_type    = tableStructure[mapper.GetMap(type, member.Name)];
                        dotNet_name = member.Name;
                        dotNet_type = ((MemberInfo)(((FieldInfo)(member)).FieldType)).Name;
                        isEnum      = true;
                    }

                    //Getting Types that are not Enum
                    if ((((FieldInfo)(member)).FieldType).BaseType != typeof(Enum))
                    {
                        sql_name    = member.Name + "ID";
                        sql_type    = tableStructure[sql_name];
                        dotNet_name = member.Name + ".ID";
                        dotNet_type = ((MemberInfo)(((FieldInfo)(member)).FieldType)).Name;
                    }
                }

                else
                {
                    sql_name    = mapper.GetMap(type, member.Name);
                    sql_type    = tableStructure[sql_name];
                    dotNet_name = member.Name;
                    dotNet_type = ((MemberInfo)(((FieldInfo)(member)).FieldType)).Name;
                }



                //Creating sql select query
                col.Append(string.Format(" Select '{0}', '{1}', '{2}', '{3}', '{4}' Union ",
                                         sql_name,
                                         sql_type,
                                         dotNet_name,
                                         dotNet_type,
                                         isEnum
                                         )
                           );
            }
        }

        //Removing last "union string"
        col.Remove(col.Length - 5, 5);

        //Creating SQL command
        SqlCommand cmd = new SqlCommand(col.ToString());

        try
        {
            using (SqlConnection conn = new SqlConnection("context connection=true"))
            {
                conn.Open();
                cmd.Connection = conn;

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    SqlContext.Pipe.Send(reader);
                }
            }
        }
        catch (Exception e)
        {
            throw new Exception("Could not get table data", e);
        }
        /****************************************************************/
        #endregion
    }