| 框架使用及规范参考 |
|
| 作者:无锋不起… 来源:转自酷网动力(www.ASPCOOL.COM) 时间:2008-2-17 17:25:44 『 字号:大 中 小 』
|
|
|
|
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中模块结构参考: (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> 对类、方法属性等进行说明!在其上一行输入“///”即可自动产生后面内容。 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 |
|
上一篇文章: TreeView 和 Menu 的用法 下一篇文章: 递归遍历页面控件 |
| 【发表评论】【打印本文】【关闭窗口】 |
| |