1. 三层结构模式开发:
基类介绍:
(1) 数据层(DAL): Framework.DAL.DbObject必须继承,里面包括对存储过程 RunProcedure 和sql语句RunSQL的数据处理函数,根据参数不同,提供了四种重载,可返回四中数据类型:
执行sql语句----------------------------------------------------#region 执行sql语句----------------------------------------------------
/**////<summary>
///1. 执行sql语句,
/// rowsAffected=-1, 执行查询,并返回结果集中第一行第一列;
/// rowsAffected=0 或其他, 返回受影响的行数
///</summary>
/// <example>
/// 参数:
/// IDataParameter[] parameters = new IDataParameter[3];
/// parameters[0] = GetParameter("@UserID", System.Data.DbType.Int32, currentUser.UserID);
/// parameters[1] = GetParameter("@Photo", System.Data.DbType.Binary, currentUser.Photo);
/// parameters[2] = GetParameter("@ImageType", System.Data.DbType.String, currentUser.ImageType);
/// 或
/// SqlParameter[] parameters ={
/// new SqlParameter("@NodeId", SqlDbType.Int, 4),
/// new SqlParameter("@Depth", SqlDbType.Int, 4)};
/// parameters[0].Value = 36;
/// parameters[1].Value = 4;
/// </example>
///<remarks>
/// int rowsAffected = 0;
/// return RunSQL("sql", rowsAffected [, parameters]);
///</remarks>
protected int RunSQL(string sql, ref int rowsAffected, params IDataParameter[] parameters)
{ }
/**////<summary>
///2. 执行sql语句,并返回 DataReader
///</summary>
///<remarks>
/// return RunSQL("sql" [, parameters]);
///</remarks>
protected IDataReader RunSQL(string sql, params IDataParameter[] parameters)
{}
/**////<summary>
///3. 执行sql语句,并返回 DataSet
///</summary>
///<remarks>
/// return RunSQL("sql", tableName [, parameters]);
///</remarks>
protected DataSet RunSQL(string sql, string tableName, params IDataParameter[] parameters)
{}
/**////<summary>
///4. 执行 FillDataSet
///</summary>
///<remarks>
/// return RunSQL("sql", tableName, dataSet [, parameters]);
///</remarks>
protected void RunSQL(string sql, string tableName, DataSet dataSet, params IDataParameter[] parameters)
{}
#endregion
(2) 业务层(BLL):必须继承 Framework.BLL.BizObject,暂无函数。
(3) 用户层(UI):在 *.aspx.cs 中继承Framework.UI.PageBase,里面提供了在UI可直接使用的公共函数。
(4) App_Code中模块结构参考:
BLL:逻辑层,DAL:数据层,Entity:实体定义。
(5) Entity示例:
注意第二个构造函数,在BLL需要返回Entity时,根据DAL返回的DataSet.Tables[0].Rows[0]作为参数,可直接构造Entity返回。
namespace RM.Entity
{
/**//// <summary>
/// 歌曲实体
/// </summary>
public class MusicInfo : BaseInfo
{
属性#region 属性
private int _CategoryID;
/**//// <summary>类别ID</summary>
public int CategoryID
{
get { return _CategoryID; }
set { _CategoryID = value; }
}
private string _Category;
/**//// <summary>类别</summary>
public string Category
{
get { return _Category; }
set { _Category = value; }
}
private string _Artist;
/**//// <summary>歌手名,30个字节</summary>
public string Artist
{
get { return _Artist; }
set { _Artist = value; }
}
private string _Album;
/**//// <summary>专辑名称,30个字节</summary>
public string Album
{
get { return _Album; }
set { _Album = value; }
}
private string _Year;
/**//// <summary>年代,4个字符</summary>
public string Year
{
get { return _Year; }
set { _Year = value; }
}
private string _Comment;
/**//// <summary>注释,28个字节</summary>
public string Comment
{
get { return _Comment; }
set { _Comment = value; }
}
#endregion
构造函数#region 构造函数
public MusicInfo()
{ }
public MusicInfo(DataRow dataRow)
{
this.Title = (string)dataRow["Title"];
this.CategoryID = (int)dataRow["CategoryID"];
this.Category = (string)dataRow["CategoryName"];
this.Album = dataRow["Album"] == System.DBNull.Value ? string.Empty : dataRow["Album"].ToString();
this.Artist = dataRow["Artist"] == System.DBNull.Value ? string.Empty : dataRow["Artist"].ToString();
this.Comment = dataRow["Comment"] == System.DBNull.Value ? string.Empty : dataRow["Comment"].ToString();
this.Length = Convert.ToDateTime(dataRow["Length"]);
this.Url = dataRow["Url"] == System.DBNull.Value ? string.Empty : dataRow["Url"].ToString();
this.Year = dataRow["Year"] == System.DBNull.Value ? string.Empty : dataRow["Year"].ToString();
}
#endregion
}
}
2. 全局信息:Framework.Globals 全局静态变量,静态属性,静态方法
3. 错误信息处理:Framework.AppException
自定义错误信息处理,为合理显示程序错误信息,避免在客户端暴露太多有关程序信息。根据参数不同实例化此类即可。内有两个静态方法:
(1)LogEvent:将错误日志写入windows系统事件日志;
(2)LogFile:将错误日志写入日志文件。
4. 命名问题:简短明了,见其名知其义。
5. 要使用 ///<summary>***///</summary> 对类、方法属性等进行说明!在其上一行输入“///”即可自动产生后面内容。