Esempio n. 1
0
        /// <summary>
        /// 数据库所有表名
        /// </summary>
        /// <param name="sFilterTable">过滤名称</param>
        /// <returns></returns>
        public DataTable DBTables(string sFilterTable)
        {
            string strSql = "select table_name, TABLE_COMMENT as comments, '' table_camel_name, '' primay_key  from information_schema.tables where table_schema = '" + conn.Database + "'";

            if (sFilterTable.Trim() != string.Empty)
            {
                strSql = string.Format(strSql, "WHERE LOWER(TABLE_NAME) LIKE '" + sFilterTable.Trim().ToLower() + "%'");
            }
            else
            {
                strSql = string.Format(strSql, "");
            }
            DataTable dt = MySqlHelper.GetDataTable(strSql);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string TableName = dt.Rows[i]["table_name"].ToString();
                dt.Rows[i]["table_camel_name"] = PublicHelper.GetCamelName(TableName);

                List <string> keyList = Generate.GetPrimayKeys(Enumeration.DataBaseType.MySQL, TableName); //1 MySQL
                if (keyList.Count == 0)
                {
                    //dt.Rows[i]["primay_key"] = "N";
                    dt.Rows[i]["primay_key"] = "";
                }
                else
                {
                    //dt.Rows[i]["primay_key"] = "Y";
                    dt.Rows[i]["primay_key"] = keyList[0].ToString();
                }
            }

            return(dt);
        }
Esempio n. 2
0
        /// <summary>
        /// 数据库所有表名
        /// </summary>
        /// <param name="sFilterTable">过滤名称</param>
        /// <returns></returns>
        public DataTable DBTables(string sFilterTable)
        {
            string strSql = "SELECT ut.table_name, utc.comments, '' table_camel_name, '' primay_key FROM user_tables ut INNER JOIN user_tab_comments utc ON ut.table_name=utc.table_name {0} ORDER BY ut.table_name";

            if (sFilterTable.Trim() != string.Empty)
            {
                strSql = string.Format(strSql, "WHERE LOWER(ut.table_name) LIKE '" + sFilterTable.Trim().ToLower() + "%'");
            }
            else
            {
                strSql = string.Format(strSql, "");
            }
            DataTable dt = OracleHelper.GetDataTable(strSql);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string TableName = dt.Rows[i]["table_name"].ToString();
                dt.Rows[i]["table_camel_name"] = PublicHelper.GetCamelName(TableName);

                List <string> keyList = Generate.GetPrimayKeys(0, TableName); //0 Oracle
                if (keyList.Count == 0)
                {
                    //dt.Rows[i]["primay_key"] = "N";
                    dt.Rows[i]["primay_key"] = "";
                }
                else
                {
                    //dt.Rows[i]["primay_key"] = "Y";
                    dt.Rows[i]["primay_key"] = keyList[0].ToString();
                }
            }

            return(dt);
        }
Esempio n. 3
0
        /// <summary>
        /// 读取XML文件,并以键值对的形式返回值
        /// </summary>
        /// <returns></returns>
        public static Dictionary <string, string> readXml(string XMLPath)
        {
            DataSet dsXml = new DataSet();

            dsXml.ReadXml(XMLPath);

            Dictionary <string, string> dic = new Dictionary <string, string>();

            for (int i = 0; i < dsXml.Tables[0].Rows.Count; i++)
            {
                dic.Add(dsXml.Tables[0].Rows[i]["OriName"].ToString(),
                        PublicHelper.GetCamelName(dsXml.Tables[0].Rows[i]["Camel_Name"].ToString()));
            }
            return(dic);
        }
Esempio n. 4
0
        private void dgvTables_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex == -1 || e.ColumnIndex == -1)
            {
                return;
            }
            //表中字段
            DataTable dtColumns = null;

            if (cbxDataBase.SelectedIndex == 0)
            {
                dtColumns = new OracleInfo().getColumnsByTableName(this.dgvTables.Rows[e.RowIndex].Cells["Table_Name"].Value.ToString());
            }
            else if (cbxDataBase.SelectedIndex == 1)
            {
                dtColumns = new MySQLInfo().getColumnsByTableName(this.dgvTables.Rows[e.RowIndex].Cells["Table_Name"].Value.ToString());
            }
            else if (cbxDataBase.SelectedIndex == 2)
            {
                dtColumns = new MSSQLInfo().getColumnsByTableName(this.dgvTables.Rows[e.RowIndex].Cells["Table_Name"].Value.ToString());
            }
            else if (cbxDataBase.SelectedIndex == 3)
            {
                dtColumns = new PgInfo().getColumnsByTableName(this.dgvTables.Rows[e.RowIndex].Cells["Table_Name"].Value.ToString());
            }
            else
            {
            }

            dtColumns.TableName = "Columns";
            createCorrespondingXmlWhenNotExist();

            //显示骆驼表示法列名
            for (int i = 0; i < dtColumns.Rows.Count; i++)
            {
                string name = dtColumns.Rows[i]["Column_Name"].ToString();
                //if (dic.ContainsKey(name))
                //{
                //    dtColumns.Rows[i]["CamelName"] = dic[name];
                //}
                dtColumns.Rows[i]["Camel_Name"] = PublicHelper.GetCamelName(name);
            }
            dtColumns.AcceptChanges();

            this.dgvColumns.DataSource = dtColumns;
            //this.dgvColumns.AutoResizeColumns();
        }
Esempio n. 5
0
        /// <summary>
        /// 数据库所有表名
        /// </summary>
        /// <param name="sFilterTable">过滤名称</param>
        /// <returns></returns>
        public DataTable DBTables(string sFilterTable)
        {
            string strSql = "select relname as table_name"
                            + ", cast(obj_description(relfilenode, 'pg_class') as varchar) as comments ,"
                            + "'' table_camel_name, '' primay_key"
                            + " from pg_class c where relnamespace IN(SELECT oid FROM pg_namespace"
                            + " WHERE nspname = '" + dbSchema + "') and reltype > 0 and relname not like '%_copy%' order by table_name";

            if (sFilterTable.Trim() != string.Empty)
            {
                strSql = string.Format(strSql, "and LOWER(relname) like '" + sFilterTable.Trim().ToLower() + "%'");
            }
            else
            {
                strSql = string.Format(strSql, "");
            }
            //strSql = "SELECT * FROM \"ClientArticleConfig\"";
            DataTable dt = PgHelper.GetDataTable(strSql);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string TableName = dt.Rows[i]["table_name"].ToString();
                dt.Rows[i]["table_camel_name"] = PublicHelper.GetCamelName(TableName);

                List <string> keyList = Generate.GetPrimayKeys(Enumeration.DataBaseType.PostgreSQL, TableName); //1 PostgreSQL
                if (keyList.Count == 0)
                {
                    //dt.Rows[i]["primay_key"] = "N";
                    dt.Rows[i]["primay_key"] = "";
                }
                else
                {
                    //dt.Rows[i]["primay_key"] = "Y";
                    dt.Rows[i]["primay_key"] = keyList[0].ToString();
                }
            }

            return(dt);
        }
Esempio n. 6
0
        /// <summary>
        /// 数据库所有表名
        /// </summary>
        /// <param name="sFilterTable">过滤名称</param>
        /// <returns></returns>
        public DataTable DBTables(string sFilterTable)
        {
            //string strSql = "SELECT Name as TABLE_NAME, TABLE_COMMENT as comments, NAMEtemp,* FROM " + conn.Database +  "..SysObjects Where XType = 'U' ORDER BY Name";
            //string strSql = "select table_name, TABLE_COMMENT as comments, '' table_camel_name, '' primay_key  from information_schema.tables where table_schema = '" + conn.Database + "'";
            string strSql = "select a.name AS TABLE_NAME,  isnull(g.[value], '') AS comments, '' table_camel_name, '' primay_key from  sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0)";

            if (sFilterTable.Trim() != string.Empty)
            {
                strSql = string.Format(strSql, "WHERE LOWER(TABLE_NAME) LIKE '" + sFilterTable.Trim().ToLower() + "%'");
            }
            else
            {
                strSql = string.Format(strSql, "");
            }
            DataTable dt = MSSQLHelper.GetDataTable(strSql);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string TableName = dt.Rows[i]["table_name"].ToString();
                dt.Rows[i]["table_camel_name"] = PublicHelper.GetCamelName(TableName);

                List <string> keyList = Generate.GetPrimayKeys(Enumeration.DataBaseType.MSSQL, TableName); // MSSQL
                if (keyList.Count == 0)
                {
                    //dt.Rows[i]["primay_key"] = "N";
                    dt.Rows[i]["primay_key"] = "";
                }
                else
                {
                    //dt.Rows[i]["primay_key"] = "Y";
                    dt.Rows[i]["primay_key"] = keyList[0].ToString();
                }
            }

            return(dt);
        }
Esempio n. 7
0
        /// <summary>
        /// 生成实体类
        /// </summary>
        /// <param name="dbTableName">数据库中的表名称</param>
        /// <param name="tableCamelName">参与生成的表名称(可能是数据表名称也可能是表名称的骆驼表示法</param>
        public void GenerateModel(Enumeration.DataBaseType DBType, ModelTable mt)
        {
            StringBuilder sbTemp    = new StringBuilder();
            DataTable     dtColumns = SelectColumnsByTableName(DBType, mt.Table_Name);

            string colName = string.Empty;

            #region 生成命名空间和类
            sbTemp.Append("using System;"); //引入命名空间
            sbTemp.Append("\r\nusing Nest;");
            sbTemp.Append("\r\nusing System.ComponentModel;");
            sbTemp.Append("\r\nusing System.Collections.Generic;");
            sbTemp.Append("\r\nusing System.ComponentModel.DataAnnotations;");
            sbTemp.Append("\r\nusing System.ComponentModel.DataAnnotations.Schema;");
            sbTemp.Append("\r\n");
            sbTemp.Append("\r\n").Append("namespace ").Append(NameSpaceModel);    //命名空间
            sbTemp.Append("\r\n").Append("{");
            sbTemp.Append("\r\n").Append("\t/// <summary>");
            sbTemp.Append("\r\n").Append("\t///").Append(GetTableComments(DBType, mt.Table_Name)
                                                         .Replace("\r\n", " ")
                                                         .Replace("\n", " "));
            sbTemp.Append("\r\n").Append("\t/// </summary>");
            sbTemp.Append("\r\n").Append("\t[Serializable]");
            sbTemp.Append("\r\n").Append("\t[Table(\"" + mt.Table_Name + "\")]");
            sbTemp.Append("\r\n").Append("\t[ElasticsearchType(Name = \"" + mt.Table_Name + "\")]");
            sbTemp.Append("\r\n").Append("\tpublic partial class ")
            .Append(Words.ToSingular(Words.reWriteWord(mt.TabCamelName)));
            sbTemp.Append("\r\n").Append("\t{");    //类
            #endregion

            #region 生成属性
            for (int i = 0; i < dtColumns.Rows.Count; i++)
            {
                //string tempTableName = dtColumns.Rows[i]["TABLE_NAME"].ToString();
                string tempColumnName = dtColumns.Rows[i]["COLUMN_NAME"].ToString();
                tempColumnName = tempColumnName == mt.Table_Name ? tempColumnName + "1" : tempColumnName;//如果字段名和表明相同,就在字段名后面加上字符"1"
                colName        = tempColumnName;

                string tempType        = dtColumns.Rows[i]["DATA_TYPE"].ToString();
                string tempLength      = dtColumns.Rows[i]["DATA_LENGTH"].ToString();
                string tempPrecision   = dtColumns.Rows[i]["DATA_PRECISION"].ToString();
                string tempScale       = dtColumns.Rows[i]["DATA_SCALE"].ToString();
                string tempNullAble    = dtColumns.Rows[i]["NULLABLE"].ToString();
                string tempDescription = dtColumns.Rows[i]["COMMENTS"].ToString().Replace("\r\n", " ").Replace("\n", " ");

                //if (string.IsNullOrWhiteSpace(tempScale))
                //{
                //    tempScale = "0";
                //}

                //属性
                sbTemp.Append("\r\n");
                sbTemp.Append("\r\n\t\t/// <summary>");
                sbTemp.Append("\r\n\t\t///").Append(tempDescription);
                sbTemp.Append("\r\n\t\t/// </summary>");
                //[Nest.String(Index = FieldIndexOption.NotAnalyzed)]
                //[Nest.String(Analyzer = "standard")]

                sbTemp.Append("\r\n\t\t[Display(Name = \"").Append(PublicHelper.GetCamelName(colName)).Append("\")]");
                if (tempNullAble == "N" || tempNullAble == "NO")
                {
                    sbTemp.Append("\r\n\t\t[Required]");
                }
                string ColType = DataTypeConvert.ConvertTypeVS2008(dtColumns.Rows[i]);
                if (ColType == "string")
                {
                    if (tempLength == "")
                    {
                        if (tempType == "text" || tempType == "character varying")
                        {
                            sbTemp.Append("\r\n\t\t[StringLength(").Append("8000").Append(")]");
                        }
                        else
                        {
                            MessageBox.Show("提示!", "未知类型:" + tempType, MessageBoxButtons.OK,
                                            MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
                        }
                    }
                    else
                    {
                        sbTemp.Append("\r\n\t\t[StringLength(").Append(tempLength).Append(")]");
                    }
                }
                //sbTemp.Append("\r\n\t\t[Column(TypeName = \"").Append(ColType).Append("\")]");

                //是否主键
                if (mt.PrimayKey.Equals(colName))
                {
                    sbTemp.Append("\r\n\t\t[Key]");
                    sbTemp.Append("\r\n\t\t[Keyword]");
                }

                sbTemp.Append("\r\n\t\tpublic ")
                .Append(ColType)
                .Append(" ")
                .Append(Words.reWriteWord(colName))
                .Append(" { get; set; }");
            }
            sbTemp.Append("\r\n\t}");
            sbTemp.Append("\r\n}");
            #endregion

            // 生成cs文件
            generateFile("Models", Words.ToSingular(mt.TabCamelName), sbTemp);
        }