分享

黑马程序员----(2).net c# 一步一步自己写三层代码生成器(生成mode层)

 quasiceo 2013-03-04

黑马程序员----(2).net c# 一步一步自己写三层代码生成器(生成mode层)

 

生成mode

(1)在主界面 添加如下图这么几个控件。

 

(2)添加一个公共类 把一些 重复用到的方法写在这里面如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace 代码生成
{
    public class comment
    {
        #region 类型转换//把数据库中字段类型转换为 c#的数据类型;
        public static string sqldatatoc(string leixing)
        {
            switch(leixing)
            {
                case "nvarchar":
                case "char":
                case "text":
                case "varchar": return "string";
                case "date":
                case "datetime": return "DateTime?";
                case "float":
                case "real": return "double?";
                case "int": return "int?";
                case "bit": return "bool";
                default: return "string";

            }

        }
        #endregion
        #region 保存文件
        public static void savefile(StringBuilder s)
        {
            StringWriter a = new StringWriter(s);
            File.WriteAllText("c:\\1.cs", s.ToString());
        }
        #endregion
    }
}
在主窗体的cs文件中添加生成model层的方法:
private void generateMode()
        {
            string constr = c.content.Replace("master",tvwserverlist.SelectedNode.Parent.Text);
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("using System;");
            sb.AppendLine("namespace  " + txtmingm.Text+".model");
            sb.AppendLine("{");
            DataTable t = new DataTable();
            string table = tvwserverlist.SelectedNode.Text;
            sb.AppendLine("    public partial class " + table);
            sb.AppendLine("    {");
            string sql = "select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME=@tname";
            SqlParameter p = new SqlParameter("@tname", table);
            t = sqldbhelp.gettable(sql, constr, p);
            foreach (DataRow r in t.Rows)
            {
                string lx = r["DATA_TYPE"].ToString();
                lx = comment.sqldatatoc(lx);
                sb.AppendLine("        private " + lx + "  " + r["COLUMN_NAME"].ToString() + ";");
                sb.AppendLine("        public " + lx + "  " + r["COLUMN_NAME"].ToString().ToUpper());
                sb.AppendLine("        {");
                sb.AppendLine("            get{return " + r["COLUMN_NAME"].ToString() + ";}");
                sb.AppendLine("            set{" + r["COLUMN_NAME"].ToString() + "=value;}");
               
                sb.AppendLine("        }");
               
            }
            sb.AppendLine("    }\r\n}");
            comment.savefile(sb);
        }
        这样我们的Mode层就生成好了。看看c盘下是不是有一个1.cs文件 这就是我们的mode层啦。
        其他BLL,DAL ,以及数据库帮助类 也都是如此生成。在这里就不帖代码了。
        当然这个系统做的有点简陋,有待完善。。。。。不过整体的思路就是这么个思路啦。
        等我完善好了之后把我的代码贴上来。
        下面是目前所做的代码。

http:///file/dpvf4gs4 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约