/// <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); }
/// <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); }
/// <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); }
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(); }
/// <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); }
/// <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); }
/// <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); }