array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 (转)手写代码生成器 - 爱码网

原文地址:http://www.cnblogs.com/zysbk/archive/2012/11/18/2772312.html

 

手写代码生成器

在我们介绍三层的时候,大家是不是发现我们写每一个功能的时候是不是非常的麻烦呢?

像其中的一个model,如果属性特别多的时候,写起来非常的慢。

像其中一些基本的功能我们可以使用代码生成器,然后在此基础上改下就好了。

但是:一定要一开始手写三层,不要依赖于代码生成器,等手写熟练了以后再用代码生成器。

先看下动软代码生成器:

(转)手写代码生成器

一、动软代码生成器的安装

下面我演示一下如何使用:

(转)手写代码生成器

二、连接数据库

(转)手写代码生成器

三、设定选项进行连接

在加载数据库的时候出现: “添加服务器配置失败,请检查是否有写入权限或文件是否存在”的错误的解决办法.

找到安装动软的目录,如果装在C盘时,默认为C:\Program Files\Maticsoft\Codematic2,给此文件夹的安全属性中当前用户添加全部权限;或添加Everyone用户,给Everyone角色添加全部权限。

(转)手写代码生成器

四、选定数据库-加载所有表

(转)手写代码生成器

五、使用代码生成器生成三层

为了理解代码生成器的原理,我们写个简单生成model的代码生成器。

用户可能会连接各种各样的数据库,连接字符串不能写死.让用户选择或者是自己输入也行.

为了方便,我在文本框里面写好连接的字符串.

(转)手写代码生成器

六、画好界面,写好连接字符串

(转)手写代码生成器

七、快速try-catch方法

(转)手写代码生成器

测试连接演示

(转)手写代码生成器

八、获取数据库中的表

(转)手写代码生成器

九、将表名绑定代码

接下来我们完成,点击一个表名一点按钮,生成一个model。

让用户指定下命名空间,类名跟表名一样就行了。

(转)手写代码生成器

十、画好接下来用到的界面

当我点生成的时候,就开始生成代码了.大家思考下,当我点生成的时候执行什么代码.

首先,获取现在的表.生成代码例如像model中的很多代码是固定的.拼个字符串就行了.

接下来的问题是,这张表中有多少个列.怎么获取表中有多少个列呢?

用下这个事务: INFORMATION_SCHEMA.COLUMNS.

接下来我就该写代码了.

(转)手写代码生成器

十一、生成model代码框架代码

(转)手写代码生成器

生成model代码演示

接下来我们改写model里面属性的代码了。

(转)手写代码生成器

十二、存储数据的类

(转)手写代码生成器

十三、生成model里的属性代码的代码

下面请大家思考下,怎样才能判断数据类型,进而使之转换。

(转)手写代码生成器

生成model里的属性演示

插入代码位置:

 1                //4.循环遍历listColumns(列集合)  2                 foreach (ColumnInfo item in listColumns)  3                 {  4                     //注:这里我写的是自动属性的,先写字段,再写属性也行。  5                     //问题1是数据类型是数据库中的,不是C#中的。2是属性名应该大写-所以下面封装了方法,处理这个。  6                     sbCode.AppendLine("public string " + CheckDbType(item) + " " + ChangePropertyName(item.ColumnName));  7                     sbCode.AppendLine("{ ");  8                     sbCode.AppendLine("get;");  9                     sbCode.AppendLine("set;"); 10                     sbCode.AppendLine("}"); 11                 } 12  13  14                 sbCode.AppendLine("}"); 15                 sbCode.AppendLine("}"); 16                 txtCode.Text = sbCode.ToString(); 17             } 18  19         } 20         private string CheckDbType(ColumnInfo p) 21         { 22             #region 1 23             //1.判断是不是值类型 24             //2.判断是不是为空 25             //3.把nverchar转换成string类型 26             //下面这么写不太合适 27             //string dbType = string.Empty; 28             //switch (p.DataType.ToLower()) 29             //{ 30             //    case "char": 31             //    case "varchar": 32             //    case "nchar": 33             //    case "nvarchar": 34             //    case "text": 35             //    case "ntext": 36             //        dbType = "string"; 37             //        break; 38             //    case "int": 39             //        dbType = "int"; 40             //        break; 41             //    case "bit": 42             //        dbType = "bool"; 43             //        break; 44             //    default: 45             //        dbType = "unknow"; 46             //        break; 47             //} 48             //if (p.IsNullable.ToLower() == "yes") 49             //{ 50             //    dbType += "?"; 51             //} 52             //return dbType; 53             #endregion 54  55             #region 2 56             Type dbType = null; 57             switch (p.DataType.ToLower()) 58             { 59                 case "char": 60                 case "varchar": 61                 case "nchar": 62                 case "nvarchar": 63                 case "text": 64                 case "ntext": 65                     dbType = typeof(string); 66                     break; 67                 case "int": 68                     dbType = typeof(int); 69                     break; 70                 case "bit": 71                     dbType = typeof(bool); 72                     break; 73             } 74             if (dbType!=null) 75             { 76                 if (dbType.IsValueType && p.IsNullable.ToLower ()=="yes") 77                 { 78                     return dbType.ToString() + "?";   79                 } 80             } 81             return dbType.ToString(); 82             #endregion 83              84         }
(转)手写代码生成器

相关文章: