分享一个几年前写的代码生成器
该界面设计部分来自网络。版权归原作者所有。
该工具没有做完成。我只是学习用的。主要是为了熟悉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