EasyCode.Net代码生成器使用心得
前段时间购买了一个EasyCode的正式使用许可 看他的界面设计的不错 就用他生成了一个项目(目地是想把以前我自己的一个程序的界面给更换下 人家有专业的UI设计我自己设计出来的肯定没有人家专业UI设计师弄出来的好看) ,项目生成完了 发现还不能直接更换界面他的是sql的数据库我以前的项目用的是sqlite的数据库因此需要对数据库连接进行下修改,批量替换了下SqlConnection和SqlParameter、SqlDataReader。 重新运行了下程序可以使用!
接下来就剩下对业务的处理了(EasyCode最大的优点就是省去了繁琐的数据添加删除修改还有最烦人的界面设计!) 现在我就可以专心处理业务数据还有功能的实现了
整个界面更换下来不到40分钟就好了(因为是个小项目所以东西也就少了很多)
我个人觉得EasyCode是个很不错的工具既省去了繁琐的数据添加、修改、删除等操作而且界面也省的自己设计了 还有就是EasyCode生成的代码非常的规范而且根据自己填写的说明他会对生成的每个方法都添加相应的注释 修改代码的时候也不费劲(我个人写代码几乎是不写任何注释的 程序写完以后在修改的时候发现自己写的代码都不知道是干什么用的) 下边把我用EasyCode生成的代码跟大家分享下
using System;using System.Text;using System.Data;using System.Data.Common;using System.Data.SqlClient;using System.Collections.Generic;using LML.ManageMoney.COL;using LML.ManageMoney.SFL; namespace LML.ManageMoney.DAL.Common{/// <summary>/// 对象名称:经济管理通用数据访问父类(数据访问层)/// 对象说明:提供“经济管理类(业务逻辑层)”对SqlServer,Oracle,OleDb等数据库进行访问的相关方法,以及部分通用方法供其子类进行调用。/// 调用说明:本类为抽象类无法进行实例化,通常可以使用“经济管理类(业务逻辑层)”中的DataAccess属性来调用本类中所定义数据访问方法。/// 作者姓名:李孟良/// 编写日期:2012-3-16 20:59:49/// </summary> public abstract class AccountsDAL {#region EasyCode所生成的默认代码//﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉// 此区域的代码为EasyCode所自动生成,提供该类数据访问的基本方法。请不要直接修改该区域中的任何代码, // 或在该区域中添加任何自定义代码,当该类发生变更时,您可以随时使用EasyCode重新生成覆盖其中的代码。 //﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍ //警告:仅用于缓存“经济管理(AccountsDAL)数据访问类”的单件实例,永远不要直接访问该变量。 private static AccountsDAL accountsDAL; /// <summary>/// 获取“经济管理(AccountsDAL)数据访问类”的实例,该属性通过判断应用程序配置文件中数据库类型“DataBaseType”的值,/// 创建一个用于对指定类型数据库进行访问的“经济管理(AccountsDAL)数据访问类”(SqlServer/Oracle/OleDb)”单件实例。/// </summary> public static AccountsDAL Instance {get {if (accountsDAL == null) {switch (System.Configuration.ConfigurationManager.AppSettings["DataBaseType"]) {case "SqlServer": accountsDAL = new SqlServer.AccountsDAL();break; default: accountsDAL = new SqlServer.AccountsDAL();break; } }return accountsDAL; } } /// <summary>/// 从DataReader中读取数据,并为Accounts对象的所有属性赋值。该方法主要由该类的子类调用。/// </summary>/// <param name="sqlDataReader">IDataReader</param>/// <param name="accounts">经济管理(Accounts)实例对象</param> protected void ReadAccountsAllData(IDataReader dataReader, Accounts accounts) {// 编号ID if (dataReader["ID"] != DBNull.Value) accounts.ID = Convert.ToInt32(dataReader["ID"]);// 时间 if (dataReader["DateTime"] != DBNull.Value) accounts.DateTime = Convert.ToDateTime(dataReader["DateTime"]);// 经手人 if (dataReader["HandledBy"] != DBNull.Value) accounts.HandledBy = Convert.ToString(dataReader["HandledBy"]);// 收入 if (dataReader["IncomeMoney"] != DBNull.Value) accounts.IncomeMoney = Convert.ToString(dataReader["IncomeMoney"]);// 支出 if (dataReader["ExpensesMoney"] != DBNull.Value) accounts.ExpensesMoney = Convert.ToString(dataReader["ExpensesMoney"]);// 分类ID if (dataReader["CategoryID"] != DBNull.Value) accounts.CategoryID = Convert.ToInt32(dataReader["CategoryID"]);// 说明 if (dataReader["Description"] != DBNull.Value) accounts.Description = Convert.ToString(dataReader["Description"]);// 备注 if (dataReader["Remark"] != DBNull.Value) accounts.Remark = Convert.ToString(dataReader["Remark"]);// 拼音 if (dataReader["PY"] != DBNull.Value) accounts.PY = Convert.ToString(dataReader["PY"]);// 用户Id if (dataReader["UserId"] != DBNull.Value) accounts.UserId = dataReader["UserId"].ToString(); } /// <summary>/// 从DataReader中读取数据,并为Accounts对象需要进行显示的属性赋值。该方法主要由该类的子类调用。/// </summary>/// <param name="sqlDataReader">IDataReader</param>/// <param name="accounts">经济管理(Accounts)实例对象</param> protected void ReadAccountsPageData(IDataReader dataReader, Accounts accounts, int rowID) {// 编号ID if (dataReader["ID"] != DBNull.Value) accounts.ID = Convert.ToInt32(dataReader["ID"]);// 时间 if (dataReader["DateTime"] != DBNull.Value) accounts.DateTime = Convert.ToDateTime(dataReader["DateTime"]);// 经手人 if (dataReader["HandledBy"] != DBNull.Value) accounts.HandledBy = Convert.ToString(dataReader["HandledBy"]);// 收入 if (dataReader["IncomeMoney"] != DBNull.Value) accounts.IncomeMoney = float.Parse(dataReader["IncomeMoney"].ToString()).ToString("F2");// 支出 if (dataReader["ExpensesMoney"] != DBNull.Value) accounts.ExpensesMoney = float.Parse(dataReader["ExpensesMoney"].ToString()).ToString("F2");// 说明 if (dataReader["Description"] != DBNull.Value) accounts.Description = Convert.ToString(dataReader["Description"]);// 备注 if (dataReader["Remark"] != DBNull.Value) accounts.Remark = Convert.ToString(dataReader["Remark"]); accounts.RowID = rowID; } //﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉// 公共数据访问类抽象方法定义,在SqlServer/Oracle/OleDb子类中实现具体方法。 //﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍ /// <summary>/// 将经济管理(Accounts)数据,采用INSERT操作插入到数据库中,并返回受影响的行数。/// </summary>/// <param name="accounts">经济管理(Accounts)实例对象</param> public abstract int Insert(Accounts accounts); /// <summary>/// 将经济管理(Accounts)数据,根据主键“编号ID(ID)”采用UPDATE操作更新到数据库中,并返回受影响的行数。/// </summary>/// <param name="accounts">经济管理(Accounts)实例对象</param> public abstract int Update(Accounts accounts); /// <summary>/// 根据经济管理(Accounts)的主键“编号ID(ID)”采用DELETE操作从数据库中删除相关记录,并返回受影响的行数。/// </summary>/// <param name="iD">经济管理(Accounts)的主键“编号ID(ID)”</param> public abstract int Delete(int iD); /// <summary>/// 根据经济管理(Accounts)的主键“编号ID(ID)”从数据库中获取经济管理(Accounts)的实例。/// 成功从数据库中取得记录返回新经济管理(Accounts)的实例“,没有取到记录返回null值。/// </summary>/// <param name="iD">经济管理(Accounts)的主键“编号ID(ID)”</param> public abstract Accounts GetDataByID(int iD); /// <summary>/// 按条件搜索/// </summary>/// <param name="StartTime">开始时间</param>/// <param name="EndTime">结束时间</param>/// <param name="jsr">经手人</param>/// <param name="cateId">分类ID</param>/// <returns></returns> public abstract PageData GetAllAccounts(int pagesize, int curPage, string StartTime, string EndTime, string jsr, string cateId); /// <summary>/// 从数据库中读取并返回所有经济管理(Accounts)List列表。/// </summary> public abstract List<Accounts> GetAllList(); /// <summary>/// 根据每页记录数及所要获取的页数,从数据库中读取并返回经过分页后的经济管理(Accounts)的列表及分页信息。/// 该方法所获取的经济管理(Accounts)列表仅用于在数据控件中显示,该方法只为对象中需要显示的属性进行赋值。/// </summary> public abstract PageData GetPageList(int pageSize, int curPage); #endregion EasyCode所生成的默认代码 //﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉// 说明:以下区域的代码为设计开发人员所编写,主要为扩展该数据访问类的功能,而定义的变量、属性及相关数据访问方法。 // 注意:为了保证该项目的多数据库支持与扩展性,本类中的方法通常为抽象方法,具体实现由本类的子类通过方法重写完成。 //﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍ /// <summary>/// 统计支出总额,收入金额/// </summary>/// <param name="startTime">开始时间</param>/// <param name="endTime">结束时间</param>/// <param name="categoryId">分类Id</param>/// <returns>支出,收入</returns> public abstract string CountMoney(DateTime startTime,DateTime endTime,int categoryId,string jsr); }}
EasyCode的官方网址:http://www.budeasycode.com/
EasyCode工程师爱英思躺博客园地址:http://www.cnblogs.com/BudEasyCode/
转载于:https://www.cnblogs.com/lmlblog/archive/2012/03/19/EasyCode.html
EasyCode.Net代码生成器使用心得相关推荐
- EasyCode .Net 代码生成器 之QQ群
这是我被推选成为EasyCode的市场人员后的第一篇随笔,希望可以和大家一起分享学习下.马云说过的一流的创意加三流的实施,不如三流的创意加一流的实施.所以实施是非常重要的,不管是网络营销还是市场营销只 ...
- EasyCode(代码生成器)
4.开始生成代码 5.pom.xml <dependency><groupId>org.springframework.boot</groupId><arti ...
- 代码生成器-设计心得
前段时间,趁着没任务,自己研究了代码生成的技术.发现没多少资料,或者有些关于jet的资料都很少,功能主体算开发大半,暂时可以自动生成管理列表的前后台代码.这篇文章主要还是写设计的一些思路,希望可以一起 ...
- mybaitis快速生成_关于Mybatis-Plus代码生成器快速使用心得
1.使用背景 偶然情况下,同事介绍Mybatis-Plus有一个代码生成的功能,能够通过 AutoGenerator 快速生成 Entity.Mapper.Mapper XML.Service.Con ...
- 功能最强大的代码生成器——EasyCode
前段时间和朋友一起,花了近一年的时间,终于开发完成了一款.Net平台下的代码生成工具. 话不多说,有图有视频有真相: 视频教程:http://v.youku.com/v_show/id_XMzU2M ...
- “动软.NET代码生成器”作者、网络红人首度开腔畅谈.NET开发
<亮剑.net:.net深入体验与实战精要> 亮剑.NET. .NET深入体验与实战精要/李天平编著. -北京:电子工业出版社,2009.6 (.NET开发专家) ISBN 978-7-1 ...
- 朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则
本文有两个部分,先介绍一下给飞机换引擎这个事情我的一些经验,因为篇幅较短然后介绍一下安全意识方面的一些心得. 给飞行中的飞机换引擎 所谓给飞行中的飞机(或飞驰的汽车)换引擎说的是我们需要对一个正在飞速 ...
- 数据库生成T4模版在代码生成中的应用心得
在本篇文章中,我们主要介绍数据库生成的内容,自我感觉有个不错的提议和大家分享下 转眼之间,我用T4模版已经三年多的时间.三年来,经过几个项目的磨合,在应用上偶有心得,在这里把一些问题一一罗列出来. 2 ...
- MyBatis-19MyBatis代码生成器-XML配置详解
概述 XML文件头 根节点generatorConfiguration及三个子元素(properties.classPathEntry.context) properties子元素 (0-1) cla ...
最新文章
- 雷军 26 年前写的代码,你见过吗?
- 将oracle导出成文本文件,oracle 数据能否导出成纯文本文件呢?
- kettle同步数据中文乱码问题解决
- 前端用sql 还是mysql_前端小白安装MySQL的踩坑路
- 信息学奥赛C++语言:求三角形的面积
- 泛型 (Generics)一定是最易懂简单的
- 思科模拟器的简单安装和使用
- 阿里巴巴代码规范 学习总结
- 使用STM8S003F3P6的硬件I2C读写AT24C16的EEPROM的经验心得
- 物料搬运设备中的链条和链轮的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 按键精灵post请求_按键精灵post数据库
- Delphi XE10让android的界面设计摆脱繁杂
- 年度光电领域盛会——CIOE中国光博会开幕在即!小枣君将全程在线直播!
- python桌面精灵_360uu游戏盒子
- springMVC中ajax使用json 对象 出现 状态代码: 415 Unsupported Media Type
- android 远程控制服务,Android手机3389远程控制服务器 microsoft remote de
- 工作方式需要主心骨、承载人
- 用FDM打印会遇到的3D打印常见问题详解
- java trim函数的使用方法_java trim的用法实例详解
- 使用kubeadm工具箱创建kubernetes1.9集群
热门文章
- c++代码根据点位连线_邹军:数控车倒角C与自动倒圆角R编程方法
- c语言内存分配与释放 不同类别变量的内存分配和释放的区别
- (小费马定理降幂)Sum
- 红魔1android版本能升到多少,红魔5G:实力全开,比快更快
- 一加桌面3.0 android8,一加手机XRemix6.0安卓8.1.0Beta2.0定制本地化增强适配归属农历等...
- KMP算法 串模式识别 用nextval[j]改进next[j]
- 命令行输入mysql不行_MySQL命令行无法插入中文数据
- 关于 m1 xcode12 编译报错 this target. for architecture arm64等问题解决方案
- telephone 为空 唯一索引_记一次线上唯一索引失效没有起效的场景
- arduino倾斜开关python语言_Arduino小白的学习记录:倾斜开关实验