分享一个几年前写的代码生成器

该界面设计部分来自网络。版权归原作者所有。

该工具没有做完成。我只是学习用的。主要是为了熟悉Devexress控件的使用。

1.系统主界面

 

 

2.系统代码生成

 

3.生成的详细代码查看

 

4.该工具写的不是很智能. 如下生成WCF服务契约代码:

  1  public class CreateWcfService
  2     {
  3 
  4         public static string GreateWcFserviceContract(List<Model> list)
  5         {
  6             var strsb = new StringBuilder();
  7             strsb.Append("/*\r\n");
  8             strsb.Append("服务信息 \r\n");
  9             strsb.AppendFormat("创建日期:{0} \r\n", DateTime.Now.ToLocalTime());
 10             strsb.Append("类描述: \r\n");
 11             strsb.Append("修改日期: \r\n");
 12             strsb.Append("版本号:V1.0 \r\n");
 13             strsb.Append("作者: \r\n");
 14             strsb.Append("*/\r\n\r\n");
 15             strsb.Append("*/\r\n\r\n");
 16 
 17             #region 服务契约
 18 
 19             strsb.AppendFormat("#region --------------------- " + list[0].TableName + "{0}--------------------- \r\n \r\n", "服务契约");
 20             strsb.AppendFormat(" ///<summary>\r\n ///新增操作{0} \r\n /// </summary>\r\n [OperationContract(IsInitiating = true)] \r\n  bool Insert{1}({2} model); \r\n \r\n", list[0].TableName, list[0].TableName, list[0].TableName);
 21             strsb.AppendFormat(" ///<summary>\r\n ///修改操作{0} \r\n /// </summary>\r\n [OperationContract(IsInitiating = true)] \r\n  bool Update{0}({1} model); \r\n \r\n", list[0].TableName, list[0].TableName);
 22             strsb.AppendFormat(" ///<summary>\r\n ///删除操作{0} \r\n /// </summary>\r\n [OperationContract(IsInitiating = true)] \r\n  bool Delete{0}({1} id);\r\n \r\n", list[0].TableName, DataType.ConvertSqlTypeToCSharp(list[0]));
 23             strsb.AppendFormat(" ///<summary>\r\n ///获取所有数据{0} \r\n /// </summary>\r\n [OperationContract(IsInitiating = true)] \r\n  List<{0}> Get{1}ListData(); \r\n \r\n", list[0].TableName, list[0].TableName);
 24             strsb.Append("#endregion \r\n");
 25 
 26             #endregion
 27             return strsb.ToString();
 28         }
 29 
 30         public static string CreateWcfServiceInfo(List<Model> list, string efName)
 31         {
 32             var strsb = new StringBuilder();
 33         
 34             if (list.Count > 0)
 35             {
 36 
 37                 #region 服务
 38 
 39                 strsb.AppendFormat("#region --------------------- {0}--------------------- \r\n", "服务");
 40 
 41                 #region 新增
 42                 strsb.AppendFormat(" ///<summary>\r\n ///新增操作{0} \r\n /// </summary>\r\n public bool Insert{1}({2} model) \r\n", list[0].TableName, list[0].TableName, list[0].TableName);
 43                 strsb.Append("   {\r\n");
 44                 strsb.Append("         try\r\n   ");
 45                 strsb.Append("         {\r\n ");
 46                 strsb.AppendFormat("             using(var entity=new {0}())\r\n ", efName);
 47                 strsb.Append("             { \r\n ");
 48                 strsb.AppendFormat("                   entity.{0}.AddObject(model); \r\n ", list[0].TableName);
 49                 strsb.Append("                   entity.SaveChanges(); \r\n ");
 50                 strsb.Append("             } \r\n ");
 51                 strsb.Append("         } \r\n ");
 52                 strsb.Append("         catch(EntityException) \r\n ");
 53                 strsb.Append("         { \r\n ");
 54                 strsb.Append("            return false; \r\n ");
 55                 strsb.Append("         } \r\n ");
 56                 strsb.Append("         catch(Exception ex) \r\n ");
 57                 strsb.Append("         { \r\n ");
 58                 strsb.Append("            throw ex.InnerException; false; \r\n ");
 59                 strsb.Append("         } \r\n ");
 60                 strsb.Append("       return true;\r\n  ");
 61                 strsb.Append("   }\r\n");
 62                 #endregion
 63 
 64                 #region 修改
 65                 strsb.AppendFormat(" ///<summary>\r\n ///修改操作{0} \r\n /// </summary>\r\n public bool Update{0}({1} model) \r\n ", list[0].TableName, list[0].TableName);
 66                 strsb.Append("   {\r\n");
 67                 strsb.Append("         try\r\n   ");
 68                 strsb.Append("         {\r\n ");
 69                 strsb.AppendFormat("             using(var entity=new {0}())\r\n ", efName);
 70                 strsb.Append("             { \r\n ");
 71                 strsb.AppendFormat("                  var category=entity.{0}.FirstOrDefault(o=>o.{1}==model.{2}); \r\n ", list[0].TableName, list[0].ColumnName, list[0].ColumnName);
 72                 strsb.Append("                   if(category!=null) \r\n ");
 73                 strsb.Append("                      { \r\n ");
 74                 for (int i = 0; i < list.Count; i++)
 75                 {
 76                     strsb.AppendFormat("                        category.{0}=model.{1}; \r\n", list[i].ColumnName, list[i].ColumnName);
 77                 }
 78                 strsb.Append("                      } \r\n ");
 79                 strsb.Append("                     entity.SaveChanges(); \r\n ");
 80                 strsb.Append("             } \r\n ");
 81                 strsb.Append("         } \r\n ");
 82                 strsb.Append("         catch(EntityException) \r\n ");
 83                 strsb.Append("         { \r\n ");
 84                 strsb.Append("            return false; \r\n ");
 85                 strsb.Append("         } \r\n ");
 86                 strsb.Append("         catch(Exception) \r\n ");
 87                 strsb.Append("         { \r\n ");
 88                 strsb.Append("            return false; \r\n ");
 89                 strsb.Append("         } \r\n ");
 90                 strsb.Append("       return true;\r\n  ");
 91                 strsb.Append("   }\r\n");
 92                 #endregion
 93 
 94                 #region 删除
 95 
 96                 strsb.AppendFormat(" ///<summary>\r\n ///删除操作{0} \r\n /// </summary>\r\n public bool Delete{0}({1} model) \r\n ", list[0].TableName, DataType.ConvertSqlTypeToCSharp(list[0]));
 97                 strsb.Append("   {\r\n");
 98                 strsb.Append("         try\r\n   ");
 99                 strsb.Append("         {\r\n ");
100                 strsb.AppendFormat("             using(var entity=new {0}())\r\n ", efName);
101                 strsb.Append("             { \r\n ");
102                 strsb.AppendFormat("                  var category=entity.{0}.Where(o=>o.{1}=={2}); \r\n ", list[0].TableName, list[0].ColumnName, list[0].ColumnName);
103                 strsb.Append("                   if(category.Any()) \r\n ");
104                 strsb.Append("                      { \r\n ");
105                 strsb.Append("                        foreach(var item in category) \r\n ");
106                 strsb.Append("                           { \r\n ");
107                 strsb.AppendFormat("                               entity.{0}.DeleteObject(item); \r\n ", list[0].TableName);
108                 strsb.Append("                           } \r\n ");
109                 strsb.Append("                         entity.SaveChanges(); \r\n ");
110                 strsb.Append("                      } \r\n ");
111                 strsb.Append("             } \r\n ");
112                 strsb.Append("         } \r\n ");
113                 strsb.Append("         catch(EntityException) \r\n ");
114                 strsb.Append("         { \r\n ");
115                 strsb.Append("            return false; \r\n ");
116                 strsb.Append("         } \r\n ");
117                 strsb.Append("         catch(Exception ex) \r\n ");
118                 strsb.Append("         { \r\n ");
119                 strsb.Append("            throw ex.InnerException; \r\n ");
120                 strsb.Append("         } \r\n ");
121                 strsb.Append("       return true;\r\n  ");
122                 strsb.Append("   }\r\n");
123                 #endregion
124 
125                 #region 获取数据
126                 strsb.AppendFormat(" ///<summary>\r\n ///获取所有数据{0} \r\n /// </summary>\r\n public List<{0}> Get{1}ListData() \r\n", list[0].TableName, list[0].TableName);
127                 strsb.Append("   {\r\n");
128                 strsb.Append("      try\r\n   ");
129                 strsb.Append("        {\r\n ");
130                 strsb.AppendFormat("             using(var entity=new {0}())\r\n ", efName);
131                 strsb.Append("             { \r\n ");
132                 strsb.AppendFormat("                return(from sel in entity.{0} select sel).ToList(); \r\n ", list[0].TableName);
133                 strsb.Append("             } \r\n ");
134                 strsb.Append("         } \r\n ");
135                 strsb.Append("         catch(EntityException exception) \r\n ");
136                 strsb.Append("         { \r\n ");
137                 strsb.Append("            throw exception.InnerException; \r\n ");
138                 strsb.Append("         } \r\n ");
139                 strsb.Append("         catch(Exception exception) \r\n ");
140                 strsb.Append("         { \r\n ");
141                 strsb.Append("           throw exception.InnerException; \r\n ");
142                 strsb.Append("         } \r\n ");
143                 strsb.Append("    }\r\n");
144                 #endregion
145 
146 
147                 strsb.Append("#endregion \r\n \r\n");
148 
149                 #endregion
150 
151      
152             }
153             return strsb.ToString();
154         }
155 
156     }

 

其实对于现在来说。肯定要以模板的形式去写代码生成器。

源代码下载:http://download.csdn.net/detail/ozaishuiyifang12/8848099

 

posted @ 2014-08-04 09:55  在 水 一 方  阅读(1112)  评论(13编辑  收藏  举报