前段时间购买了一个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/