将数据库的表生成为实体类.cs文件(笔记)

实例图



http://blog.csdn.net/u011575989/article/details/13109631

通过以上查询表结构

/// <summary>
        /// 生成单个表的类文件
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="dt">对应的表结构</param>
        /// <returns></returns>
        public string CreateTableClass(string tableName, DataTable dt)
        {
            //如果是系统表,没有数据,则返回空
            if (dt.Rows.Count == 0)
            {
                return "";
            }

            string tblName = getDXString(tableName);//首字母大写的表名

            string output = "";//保存输出信息

            output += "using System;";
            output += "\r\nusing System.Collections.Generic;";
            output += "\r\nusing System.Text;";
            output += "\r\n\r\nnamespace " + txtNameSpace.Text;
            output += "\r\n{";

            output += "\r\n\t[Serializable()]";
            output += "\r\n\tpublic class " + tblName;
            output += "\r\n\t{";

            //
            //无参构造函数
            output += "\r\n\t\tpublic " + tblName + "(){}";
            //有参构造函数
            string pars = "";
            string parInfo = "";
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                pars += dt.Rows[i]["类型"].ToString() + " " + dt.Rows[i]["字段名"].ToString().ToLower() + ",";
                parInfo += "\tthis." + getDXString(dt.Rows[i]["字段名"].ToString()) + "=" + dt.Rows[i]["字段名"].ToString().ToLower() + ";\r\n\t\t";
            }
            pars = pars.Remove(pars.LastIndexOf(","));
            parInfo = parInfo.Remove(parInfo.LastIndexOf("\r\n"));
            output += "\r\n\t\tpublic " + getDXString(tableName) + "(" + pars + ")";
            output += "\r\n\t\t{";
            output += "\r\n\t\t" + parInfo;
            output += "\r\n\t\t}";


            //
            output += "\r\n\t\t#region 属性字段";

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i]["字段说明"].ToString().Length != 0)
                {
                    output += "\r\n\t\t/// <summary>";
                    output += "\r\n\t\t/// " + getXXString(dt.Rows[i]["字段说明"].ToString());
                    output += "\r\n\t\t/// </summary>";
                }

                output += "\r\n\t\tpublic " + dt.Rows[i]["类型"].ToString() + " " + getDXString(dt.Rows[i]["字段名"].ToString()) + "{set;get;}";
            }
            output += "\r\n\t\t#endregion";
            ///

            output += "\r\n\t}";
            output += "\r\n}";
            return output;
        }

        /// <summary>
        /// 首字母大写
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string getDXString(string str)
        {
            if (str.Length > 0)
            {
                string s = str.Substring(0, 1);
                str = s.ToUpper() + str.Substring(1);
            }
            return str;
        }

        /// <summary>
        /// 首字母小写
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string getXXString(string str)
        {
            if (str.Length > 0)
            {
                string s = str.Substring(0, 1);
                str = s.ToLower() + str.Substring(1);
            }
            return str;
        }

        /// <summary>
        /// 选择存放目录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSelectPath_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog f = new FolderBrowserDialog();
            f.ShowDialog();

            txtPath.Text = f.SelectedPath;
        }

        /// <summary>
        /// 生成所有类文件
        /// </summary>
        private void btnCreateAll_Click(object sender, EventArgs e)
        {
            if (txtNameSpace.Text.Trim().Length == 0)
            {
                MessageBox.Show("命名空间不允许为空!");
                txtNameSpace.Focus();
            }
            else if (txtPath.Text.Trim().Length == 0)
            {
                MessageBox.Show("文件保存路径不允许为空!");
                btnSelectPath.Focus();
            }
            else
            {
                foreach (DataGridViewRow row in dgvTable.Rows)
                {
                    string dbTblName = row.Tag.ToString();//数据库中表名,也是dicTables集合中的关键字
                    string tblName = row.Cells["tblName"].Value.ToString();    //修改之后的表名

                    string path = txtPath.Text.Trim() + "\\" + tblName + ".cs";
                    FileStream fs = new FileStream(path, FileMode.Create);
                    StreamWriter sw = new StreamWriter(fs);
                    string info = CreateTableClass(tblName, dicTables[dbTblName]);
                    sw.WriteLine(info);
                    sw.Close();
                    fs.Close();
                }

                MessageBox.Show("生成成功!");
            }
        }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值