C# model代码生成器
using System.Collections.Generic;
using System.Text; public class Class1
{
//传递 1.表名 2.列名 3.类型
public void GenerateModel(string TableName, string ColumnName, string TypeName) //生成Model
{
#region 数据库ID所对应的类型值
Dictionary<int, string> DicType = new Dictionary<int, string>();
DicType.Add(, "int");
DicType.Add(, "string");
#endregion
#region 列名集合和数据ID
Dictionary<string, int> DicColum = new Dictionary<string, int>();
DicColum.Add("DictID", );
DicColum.Add("DictType", );
DicColum.Add("ParentID", );
DicColum.Add("Subtitle", );
DicColum.Add("Sorting", );
#endregion TypeName = "Model";
TableName = "TableName";
TableName = TableName + TypeName;
StringBuilder sb = new StringBuilder();
sb.Append("using System;"); //引入命名空间
sb.Append("namespace "); //命名空间名字
sb.Append(TypeName + "{");
sb.Append(" public partial class ");
sb.Append(TableName + "{");
sb.Append("public " + TableName + "(){}"); sb.Append("#region Model" + "\r\n"); //Begin
#region //内容
foreach (var i in DicColum)
{
foreach (var j in DicType)
{
if (i.Value == j.Key) // DicColum的56== DicType的56
{
sb.Append("private ");
sb.Append(j.Value);
sb.Append(" _");
//sb.Append(i.Key); //DicColumd的DictID //转换一下大小写在追加
sb.Append(i.Key.ToLower());
sb.Append(";\r\n");
}
}
} foreach (var i in DicColum)
{
foreach (var j in DicType)
{
if (i.Value == j.Key) // DicColum的56== DicType的56
{
sb.Append("public ");
sb.Append(j.Value);
sb.Append(" ");
sb.Append(i.Key);
sb.Append("{\r\n"); //set{ _dicttype=value;}
sb.AppendFormat("set{{ _{0} =value;}}", i.Key.ToLower());
sb.AppendFormat("get{{return _{0} ;}}", i.Key.ToLower());
sb.Append("\r\n}");
}
}
} #endregion
sb.Append("\r\n" + "#endregion"); //End sb.Append("\r\n" + "}}");
//sb.AppendFormat("using System;namespace {0}{ public partial class Dictionary{1}{ public {1}(){}}}");
string ss = sb.ToString();
} public void GenerateDAL(string TableName, string ColumnName, string TypeName)
{
TypeName = "DAL";
TableName = "ClassName";
TableName = TableName + TypeName; StringBuilder sb = new StringBuilder();
sb.Append("using System;"); //引入命名空间
sb.Append("using System.Data;");
sb.Append("using System.Text;");
sb.Append("using System.Data.SqlClient;");
sb.Append("using System.Collections.Generic;");
sb.AppendFormat("namespace {0}\r\n{\r\n", TypeName);
sb.AppendFormat(" public partial class {0}\r\n{\r\n", TableName);
sb.AppendFormat("public {0}(){}", TableName); //构造函数
sb.AppendFormat("public int Add({0} model)\r\n{{\r\n", "Model模型名称");
sb.Append("StringBuilder strSql = new StringBuilder();");
//这种方法不好---------终止 }
}
C# model代码生成器的更多相关文章
- 提高生产性工具 - Model代码生成器(二)
首先,我想阐述一下我开发这个工具的一个观点. 如果大家做过对日软件的话,很多时候,日方是进行设计的,数据模型是什么样子的,各个字段的类型,需要做什么验证,验证规则,错误信息,都是日方制定的. 外包就是 ...
- 提高生产性工具 - Model代码生成器(NET / JAVA) (一)
原来在上一家公司,整整一年都在做工具,提高生产性,那个项目特别巨大,所以总共为老东家节约了500K左右的美金. (除了表扬之外,我个人什么好处都没有,领导们都升官发财了,郁闷) 到了新公司,也准备开发 ...
- EntityFramework4.1 MODEL代码生成器 database first
原文发布时间为:2011-04-02 -- 来源于本人的百度文章 [由搬家工具导入] Generating EF Code First model classes from an existing d ...
- .NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发
上篇给大家从零开始搭建了一个我们的ASP.NET Core CMS系统的开发框架,具体为什么那样设计我也已经在第十篇文章中进行了说明.不过文章发布后很多人都说了这样的分层不是很合理,什么数据库实体应该 ...
- Yii2 自定义Gii生成代码模板
我们使用一个例子来介绍如何定制代码模板.假设我们想要定制由 model 生成器生成的代码. 我们首先创建一个名为 protected/gii/model/templates/customer 的目录. ...
- Spring Boot笔记一
Spring Boot 入门 Spring Boot 简介 > 简化Spring应用开发的一个框架:> 整个Spring技术栈的一个大整合:> J2EE开发的一站式解决方案: 微服务 ...
- mybatis自定义代码生成器(Generator)——自动生成model&dao代码
花了两天的时间研究了下mybatis的generator大体了解了其生成原理以及实现过程.感觉generator做的非常不错,给开发者也留足了空间.看完之后在generator的基础上实现了自定义的生 ...
- 【动软.Net代码生成器】连接MySQL生成C#的POCO实体类(Model)
首先是工具的下载地址: 动软.Net代码生成器 该工具官网自带完整教程: 文档:http://www.maticsoft.com/help/ 例子:http://www.maticsoft.com/h ...
- 更改动软代码生成器模板 验证Model数据合法性
1.第一个模板 判断字段是否为空 类 IsNullableType.cmt static public partial class CommonType { public static bool Is ...
随机推荐
- Java8自定义条件让集合分组
/** * 将一个指定类型对象的集合按照自定义的一个操作分组: 每组对应一个List.最终返回结果类型是:List<List<T>> * * @param <T> ...
- 域名IP绑定
该文为阿里云域名举例 首先具备3个前提: 买服务器并搭建环境:阿里云官网购买阿里云的服务器(我购买的是window系统,ECS服务器). 在自己的云服务器上布置上jdk,配置环境变量:安装上tomca ...
- JAVA集合泛型,类型擦除,类型通配符上限之类的知识点
感觉定义要比PYTHON严谨很多,一切源于静态语言的特点吧.. 于是语法上就复杂很多,值不值得呢? 参考测试URL: http://www.cnblogs.com/lwbqqyumidi/p/3837 ...
- android蓝牙协议名词解释 OPP HFP HDP A2DP PAN
各种蓝牙协议的全称: OPP:对象存储规范(Object Push Profile),最为常见的,文件的传输都是使用此协议. HFP:(Hands-free Profile),让蓝牙设备能够控制电话, ...
- Android入门:短信和拨打电话
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- 基于ArcGIS Flex API实现动态标绘(1.0)
标绘作为一种数据展示形式,在多个行业都有需求. 基于ArcGIS Flex API(3.6)实现标绘API,当前版本号1.0 alpha,支持经常使用几种标绘符号,包含: 圆弧.曲线.圆形.椭圆.弓形 ...
- luogu1908 逆序对 树状数组
题目大意:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对.求一段序列的逆序对数. 对于一个数组T,其一个点的值为值与该点下标相等的A序列中点的个数.对T维护一个树状数 ...
- luogu3386 【模板】 二分图匹配
基本概念:二分图有两种节点:X节点和Y节点.如果X和Y可以匹配, 则X与Y连着一条边.每个X节点最多只能匹配一个Y节点,同时每个Y节点最多只能匹配一个X节点.最大匹配便是最多的匹配数. 交错路径:交错 ...
- Windows下Vim主题变更
默认的好丑! 主题位置. 修改配置文件. 添加主题设置. 新的主题,很高端大气. set fileencodings=utf8,ucs-bom,cp936,big set fileencoding=u ...
- Javascript技巧之不要用for in语句对数组进行遍历
一,为什么不要用for in语句 jqModal这个jquery插件估计很多人都使用过,在jqModal源码内部,有一个函数为hs,其中有个嵌套循环如下, for(var i in {jqmShow: ...