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生成UI主界面

EasyCode

EasyCode的官方网址:http://www.budeasycode.com/

EasyCode工程师爱英思躺博客园地址:http://www.cnblogs.com/BudEasyCode/

转载于:https://www.cnblogs.com/lmlblog/archive/2012/03/19/EasyCode.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch(中文检索)source总结

包含不包含这里不多讲了。 GET /lib4/user/_search {"query": {"match_all": {}},"_source": {"includes": ["name" ,"address"],"excludes": ["age" , "birthday" ]} }直接看看…

2012 依赖注入框架

以下内容来自维基百科的控制反转词条 控制反转&#xff08;英语&#xff1a;Inversion of control&#xff0c;缩写为IoC&#xff09;&#xff0c;也叫做依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;&#xff0c;是面向对象编程中的一种设计原则&a…

机器学习笔记(二十)——求解最大熵模型

一、问题的引出 最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题。 对于给定的训练数据集T{(x1,y1),(x2,y2),…,(xn,yn)}及特征函数fi(x,y)&#xff0c;i1,2,…,n,最大熵模型的学习等价于约束最优化问题&#xff1a; maxP∈C…

ElasticSearch前缀匹配查询和范围查询(中文检索)

GET /lib4/user/_search {"query": {"match_phrase_prefix": {"name": {"query": "赵"}}} } GET /lib4/user/_search {"query": {"prefix": {"name": "赵"}} }范围查询 GET /lib4…

系统管理员必须知道的PHP安全实践

系统管理员必须知道的PHP安全实践 PHP是一种开源服务器端脚本语言&#xff0c;应用很广泛。Apache web服务器提供了这种便利&#xff1a;通过HTTP或HTTPS协议&#xff0c; 访问文件和内容。配置不当的服务器端脚本语言会带来各种各样的问题。所以&#xff0c;使用PHP时要小心。…

ElasticSearch模糊查询(中文检索)

# "*" 表示匹配任意字符 GET /lib4/user/_search {"query": {"wildcard": {"name": "赵*"}} }# "?" 表示匹配任意一个字符 GET /lib4/user/_search {"query": {"wildcard": {"name&quo…

最优化学习笔记(十四)——共轭梯度法

共轭梯度法不需要预先给定Q共轭方向&#xff0c;而是随着迭代的进行不断产生Q共轭方向。在每次的迭代中&#xff0c;利用上一个搜索方向和目标函数在当前迭代点的梯度向量 之间的线性组合构造一个新的方向&#xff0c;使其与前边已经产生的搜索方向组成Q共轭方向。对于一个n维二…

ElasticSearch filter查询

学习查询之前&#xff0c;我还是老规矩&#xff0c;先准备数据 #Filter查询 #filter是不计算相关性的&#xff0c;同时可以cache.因此&#xff0c;filter速度要快于query. POST /lib5/items/_bulk {"index":{"_id": 1}} {"price": 40,"ite…

SQL Server 2005中的分区表(四):删除(合并)一个分区

在前面我们介绍过如何创建和使用一个分区表&#xff0c;并举了一个例子&#xff0c;将不 同年份的数据放在不同的物理分区表里。具体的分区方式为&#xff1a; 第1个小表&#xff1a;2010-1-1以前的数据&#xff08;不包含2010-1-1&#xff09;。 第2个小表&#xff1a;2010-1-…

最优化学习笔记(十五)——拟牛顿法(1)

拟牛顿法分为五部分来讲&#xff0c;本文这部分作为引言&#xff0c;第二部分讲Hessian矩阵逆矩阵的近似&#xff0c;第三部分秩1修正公式&#xff0c;第四部分为DFP算法&#xff0c;最后BFGS算法。 牛顿法是一种具有较高实用性的优化问题的求解方法。牛顿法如果收敛&…

深入理解java虚拟机 (一) 第二版

前言&#xff1a; Java是目前用户最多、使用范围最广的软件开发技术之一。Java 的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java API、 Java编程语言及许多第三方Java框架(如Spring、Struts 等)构成。在国内&#xff0c;有关Java API Java语言语法及…

畅通您的iOS开发之路

随着大家对苹果产品的趋之若鹜&#xff0c;iphone与ipad软件开发的前景也相当广阔。然而&#xff0c;目前精通iOS开发的专业人才却是凤毛麟角。因此&#xff0c;安博中 程在2012年推出重磅课程——“iPhone与iPad开发实战之路——精通iOS开发”高级培训班&#xff0c;为想从事i…

深入理解java虚拟机 (二) 第二版

如何阅读本书 本书-共分为五个部分:走近Java、自动内存管理机制、虛拟机执行子系统、程序编译与代码优化、高效并发。各部分基本上是互相独立的&#xff0c;没有必然的前后依赖关系&#xff0c;读者可以从任何- -个感兴趣的专题开始阅读&#xff0c;但是每个部分中的各个章节间…

最优化学习笔记(十六)——拟牛顿法(2)

Hessian矩阵逆矩阵的近似 一、拟牛顿法的基本思路 令H0,H1,H2,…表示Hessian矩阵逆矩阵F(x(k))−1的一系列近似矩阵。我们要讨论的是这些近似矩阵应该满足的条件&#xff0c;这是拟牛顿法的基础。首先&#xff0c;假定目标函数f的Hessian矩阵F(x)是常数矩阵&#xff0c;与x无关…

tool vmmap 配置符号文件 symbolic file

转载于:https://www.cnblogs.com/titer1/archive/2012/03/21/2410316.html

最优化学习笔记(十七)——拟牛顿法(3)

秩1修正公式 在秩1修正公式中&#xff0c;修正项为αkz(k)z(k)T,αk∈R,z(k)∈Rn,是一个对称矩阵&#xff0c;近似矩阵的更新方程为&#xff1a; Hk1Hkαkz(k)z(k)T\boldsymbol{H}_{k+1} = \boldsymbol{H}_{k} + \alpha_k\boldsymbol{z}^{(k)}\boldsymbol{z}^{(k)T}注意&#…

深入理解java虚拟机 (三) 第二版

参考资料 本书名为“深人理解Java虚拟机”&#xff0c;但要想深人理解虚拟机&#xff0c;仅凭- -本书肯定是远远不够的&#xff0c;读者可以通过以下信息找到更多关于Java虚拟机方面的资料。我在写作此书的时候&#xff0c;也从下面这些参考资料中获得了很大的帮助。. (1)书籍…

memcached 如果进程占用cpu很高

memcached 如果进程占用cpu很高一客户占用到了 25% 把mencache内存大小从32m 改成256m 后 memcached 基本占用cpu 是0可能分配的内存不够用了 大量的新缓存需要进入 同时大量的旧缓存又需要被淘汰出来 导致 一进一出非常频繁 从而导致服务性能下降加大内存吧操作如下&#xff…

最优化学习笔记(十八)——拟牛顿法(4)DFP算法

秩2算法可以保证在任意第k步迭代下, 只要一维搜索是精确的,近似矩阵Hk就是正定的。 DFP算法 令k0,选择初始点x(0)&#xff0c;任意选择一个堆成正定实矩阵H0。如果g(k)0&#xff0c; 停止迭代&#xff1b; 否则&#xff0c;令d(k)−Hkg(k)计算 αkargminα≥0f(x(k)αd(k)…

《深入理解java虚拟机》第1章 走近Java

1.4 Java虚拟机发展史 上一节我们从整个Java技术的角度观察了Java 技术的发展&#xff0c;许多Java程序员都会潜意识地把它与Sun公司的HotSpot虚拟机等同看待&#xff0c;也许还有一些程序员会注意到BEA.JRockit和IBM J9&#xff0c;但对JVM的认识不仅仅只有这些。从1996年初S…