zoukankan      html  css  js  c++  java
  • 基于微软企业库的分层代码框架

     

    微软stringradiobuttonnullexceptiondataset

    一般我们都采用分层架构,

    先思考业务,要解决什么样的业务问题,再去思考技术实现。

    l 正向思维:

    界面(UI)—>业务逻辑(BLL)—>数据逻辑(DAL)—>数据实体(Model)—>数据存储(Db)

    l 反向思维:

    数据存储(Db)—>数据实体(Model)—>数据逻辑(DAL)—>业务逻辑(BLL)—>界面(UI)。

    从数据库推导到界面,从界面推导到数据库。搞清楚类之间的关系。数据之间传递关系。

    界面(UI):由控件组成。系统与用户交互的窗口。

    业务逻辑(BLL):封装业务处理功能。对象的组合,应用。

    数据逻辑(DAL):对数据的操作(算法)。(增删改查的多样性),对象函数,方法。

    数据实体(Model):操作的数据结构。对象属性

    数据存储(Db):数据的存储持久化。(表)。

    体会:程序=数据结构+算法,程序=类对象+类对象之间的关系。

    我们的很多项目都是基于微软企业库5.0搭建的。具体说一下我们在企业级项目中是怎么应用的。下面是架构图:

    1.基于微软企业库的工具类

    封装了微软企业库访问数据库常用的最基本的操作。

    2.Model层(数据库表映射)

    封装了很多属性。对应数据库表c_hbbb_code

    代码:

    [c-sharp] view plaincopy

     
    odeusing System;  
    amespace SFS.Entity.Model  
      
    // summary
    // c_hbbb_code
    // summary
       [Serializable]  
    ublic class c_hbbb_code  
       {  
    ublic c_hbbb_code()  
           { }  
    rivate int _CodeID = 0;  
    // <summary>
    // 
    // </summary>
    ublic int CodeID  
           {  
    et { return _CodeID; }  
    et { _CodeID = value; }  
           }  
    rivate string _CODENO = "";  
    // <summary>
    // 
    // </summary>
    ublic string CODENO  
           {  
    et { return _CODENO; }  
    et { _CODENO = value; }  
           }  
    rivate string _CODENAME = "";  
    // <summary>
    // 
    // </summary>
    ublic string CODENAME  
           {  
    et { return _CODENAME; }  
    et { _CODENAME = value; }  
           }  
    rivate string _ISMX = "";  
    // <summary>
    // 
    // </summary>
    ublic string ISMX  
           {  
    et { return _ISMX; }  
    et { _ISMX = value; }  
           }  
    rivate string _ParentCodeNO = "";  
    // <summary>
    // 
    // </summary>
    ublic string ParentCodeNO  
           {  
    et { return _ParentCodeNO; }  
    et { _ParentCodeNO = value; }  
           }  
    rivate string _ZT = "";  
    // <summary>
    // 
    // </summary>
    ublic string ZT  
           {  
    et { return _ZT; }  
    et { _ZT = value; }  
           }  
       }  
      

    3.Dal层(封装数据库操作增,删,改,查)

    [c-sharp] view plaincopy

     
    odenamespace SFS.DAL  
      
    ublic class c_hbbb_code  
       {  
     
     
    rivate SFS.Utility.DbUtility.DbHelper db = null;  
     
    // <summary>
    // 是否存在该记录
    // </summary>
    ublic bool Exists(string CodeID)  
           {  
     
    tring strSql = "SELECT count(1) FROM c_hbbb_code WHERE  CodeID=@CodeID ";  
               DbCommand dbCommand = db.GetSqlStringCommand(strSql);  
               db.AddInParameter(dbCommand, "CodeID", DbType.String, CodeID);  
     
    nt result;  
    bject obj = db.ExecuteScalar(dbCommand);  
    nt.TryParse(obj.ToString(), out result);  
    f (result == 1)  
               {  
    eturn true;  
               }  
    lse
               {  
    eturn false;  
               }  
           }  
     
     
    // <summary>
    //  增加一条数据
    // </summary>
    ublic int Add(SFS.Entity.Model.c_hbbb_code model)  
           {  
    eturn Add(model, null);  
           }  
     
    // <summary>
    //  增加一条数据
    // </summary>
    ublic int Add(SFS.Entity.Model.c_hbbb_code model, DbTransaction transaction)  
           {  
    ry
               {  
    tring strSql = "INSERT INTO c_hbbb_code(CodeID,CODENO,CODENAME,ISMX,ParentCodeNO,ZT)VALUES(@CodeID,@CODENO,@CODENAME,@ISMX,@ParentCodeNO,@ZT)";  
                   DbCommand dbCommand = db.GetSqlStringCommand(strSql);  
                   db.AddInParameter(dbCommand, "CodeID", DbType.Int32, model.CodeID);  
                   db.AddInParameter(dbCommand, "CODENO", DbType.String, model.CODENO);  
                   db.AddInParameter(dbCommand, "CODENAME", DbType.String, model.CODENAME);  
                   db.AddInParameter(dbCommand, "ISMX", DbType.String, model.ISMX);  
                   db.AddInParameter(dbCommand, "ParentCodeNO", DbType.String, model.ParentCodeNO);  
                   db.AddInParameter(dbCommand, "ZT", DbType.String, model.ZT);  
     
    f (transaction == null)  
                   {  
    eturn db.ExecuteNonQuery(dbCommand);  
                   }  
    lse
                   {  
    eturn db.ExecuteNonQuery(dbCommand, transaction);  
                   }  
               }  
    atch (AddException addex)  
               {  
                   addex.DeveloperMessage = "添加c_hbbb_code记录失败!" + addex.Message + "在" + this.ToString() + ".Add(SFS.Entity.Model.c_hbbb_code model)中";  
                   addex.UserMessage = "添加c_hbbb_code记录失败!";  
    hrow addex;  
               }  
           }  
     
    // <summary>
    //  更新一条数据
    // </summary>
    ublic int Update(SFS.Entity.Model.c_hbbb_code model)  
           {  
    eturn Update(model, null);  
           }  
     
    // <summary>
    //  更新一条数据
    // </summary>
    ublic int Update(SFS.Entity.Model.c_hbbb_code model, DbTransaction transaction)  
           {  
    ry
               {  
    tring strSql = "UPDATE c_hbbb_code SET CODENO=@CODENO,CODENAME=@CODENAME,ISMX=@ISMX,ParentCodeNO=@ParentCodeNO,ZT=@ZT  WHERE  CodeID=@CodeID ";  
                   DbCommand dbCommand = db.GetSqlStringCommand(strSql);  
                   db.AddInParameter(dbCommand, "CodeID", DbType.Int32, model.CodeID);  
                   db.AddInParameter(dbCommand, "CODENO", DbType.String, model.CODENO);  
                   db.AddInParameter(dbCommand, "CODENAME", DbType.String, model.CODENAME);  
                   db.AddInParameter(dbCommand, "ISMX", DbType.String, model.ISMX);  
                   db.AddInParameter(dbCommand, "ParentCodeNO", DbType.String, model.ParentCodeNO);  
                   db.AddInParameter(dbCommand, "ZT", DbType.String, model.ZT);  
     
    f (transaction == null)  
                   {  
    eturn db.ExecuteNonQuery(dbCommand);  
                   }  
    lse
                   {  
    eturn db.ExecuteNonQuery(dbCommand, transaction);  
                   }  
               }  
    atch (UpdateException updateex)  
               {  
                   updateex.DeveloperMessage = "修改c_hbbb_code记录失败!" + updateex.Message + "在" + this.ToString() + ".Update(SFS.Entity.Model.c_hbbb_code model)中";  
                   updateex.UserMessage = "修改c_hbbb_code记录失败!";  
    hrow updateex;  
               }  
           }  
     
    // <summary>
    // 删除一条数据
    // </summary>
    ublic int Delete(string CodeID)  
           {  
    eturn Delete(CodeID, null);  
           }  
     
    // <summary>
    // 删除一条数据
    // </summary>
    ublic int Delete(string CodeID, DbTransaction transaction)  
           {  
    ry
               {  
    f (string.IsNullOrEmpty(CodeID))  
                   {  
                       NOIsNullOrEmptyException exception = new NOIsNullOrEmptyException();  
                       exception.DeveloperMessage = "CodeID编号不能为空!在" + this.ToString() + ".Delete(string CodeID)中";  
                       exception.UserMessage = "CodeID编号不能为空!";  
    hrow exception;  
                   }  
     
     
    tring strSql = "DELETE FROM c_hbbb_code WHERE  CodeID=@CodeID ";  
                   DbCommand dbCommand = db.GetSqlStringCommand(strSql);  
                   db.AddInParameter(dbCommand, "CodeID", DbType.String, CodeID);  
     
    f (transaction == null)  
                   {  
    eturn db.ExecuteNonQuery(dbCommand);  
                   }  
    lse
                   {  
    eturn db.ExecuteNonQuery(dbCommand, transaction);  
                   }  
               }  
    atch (DeleteException deleteex)  
               {  
                   deleteex.DeveloperMessage = "删除c_hbbb_code记录失败!" + deleteex.Message + "在" + this.ToString() + ".Delete(string CodeID)中";  
                   deleteex.UserMessage = "删除c_hbbb_code记录失败!";  
    hrow deleteex;  
               }  
           }  
     
    // <summary>
    // 得到一个对象实体
    // </summary>
    ublic SFS.Entity.Model.c_hbbb_code GetModel(string CodeID)  
           {  
    f (string.IsNullOrEmpty(CodeID))  
               {  
                   NOIsNullOrEmptyException exception = new NOIsNullOrEmptyException();  
                   exception.DeveloperMessage = "CodeID编号不能为空!在" + this.ToString() + ".GetModel(string CodeID)中";  
                   exception.UserMessage = "CodeID编号不能为空!";  
    hrow exception;  
               }  
     
               StringBuilder strSql = new StringBuilder();  
               strSql.Append("SELECT CodeID,CODENO,CODENAME,ISMX,ParentCodeNO,ZT ");  
               strSql.Append(" FROM c_hbbb_code ");  
               strSql.Append(" WHERE  CodeID=@CodeID ");  
     
               DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());  
               db.AddInParameter(dbCommand, "CodeID", DbType.String, CodeID);  
     
     
               SFS.Entity.Model.c_hbbb_code model = null;  
    sing (IDataReader dataReader = db.ExecuteReader(dbCommand))  
               {  
    f (dataReader.Read())  
                   {  
                       model = ReaderBind(dataReader);  
                   }  
               }  
    eturn model;  
           }  
     
    // <summary>
    // 获得数据列表
    // </summary>
    ublic DataSet GetDataSet(string strWhere)  
           {  
    ry
               {  
                   StringBuilder strSql = new StringBuilder();  
                   strSql.Append("SELECT CodeID,CODENO,CODENAME,ISMX,ParentCodeNO,ZT ");  
                   strSql.Append(" FROM c_hbbb_code ");  
    f (strWhere.Trim() != "")  
                   {  
                       strSql.Append(" WHERE " + strWhere);  
                   }  
    eturn db.ExecuteDataSet(CommandType.Text, strSql.ToString());  
               }  
    atch (SelectException selectex)  
               {  
                   selectex.DeveloperMessage = "查询记录失败!" + selectex.Message + "在" + this.ToString() + ".GetDataSet(string strWhere)中";  
                   selectex.UserMessage = "查询记录失败!";  
    hrow selectex;  
               }  
           }  
     
    // <summary>
    // 获得数据列表(比DataSet效率高,推荐使用)
    // </summary>
    ublic List<SFS.Entity.Model.c_hbbb_code> GetList(string strWhere)  
           {  
    ry
               {  
                   StringBuilder strSql = new StringBuilder();  
                   strSql.Append("SELECT CodeID,CODENO,CODENAME,ISMX,ParentCodeNO,ZT ");  
                   strSql.Append(" FROM c_hbbb_code ");  
    f (strWhere.Trim() != "")  
                   {  
                       strSql.Append(" WHERE " + strWhere);  
                   }  
                   List<SFS.Entity.Model.c_hbbb_code> list = new List<SFS.Entity.Model.c_hbbb_code>();  
    sing (IDataReader dataReader = db.ExecuteReader(CommandType.Text, strSql.ToString()))  
                   {  
    hile (dataReader.Read())  
                       {  
                           list.Add(ReaderBind(dataReader));  
                       }  
                   }  
    eturn list;  
               }  
    atch (SelectException selectex)  
               {  
                   selectex.DeveloperMessage = "查询记录失败!" + selectex.Message + "在" + this.ToString() + ".GetList(string strWhere)中";  
                   selectex.UserMessage = "查询记录失败!";  
    hrow selectex;  
               }  
           }  
     
     
    // <summary>
    // 对象实体绑定数据
    // </summary>
    ublic SFS.Entity.Model.c_hbbb_code ReaderBind(IDataReader dataReader)  
           {  
               SFS.Entity.Model.c_hbbb_code model = new SFS.Entity.Model.c_hbbb_code();  
    bject obj;  
     
               obj = dataReader["CodeID"];  
    f (obj != null && obj != DBNull.Value)  
               {  
                   model.CodeID = (int)obj;  
               }  
     
               obj = dataReader["CODENO"];  
    f (obj != null && obj != DBNull.Value)  
               {  
                   model.CODENO = obj.ToString();  
               }  
     
               obj = dataReader["CODENAME"];  
    f (obj != null && obj != DBNull.Value)  
               {  
                   model.CODENAME = obj.ToString();  
               }  
     
               obj = dataReader["ISMX"];  
    f (obj != null && obj != DBNull.Value)  
               {  
                   model.ISMX = obj.ToString();  
               }  
     
               obj = dataReader["ParentCodeNO"];  
    f (obj != null && obj != DBNull.Value)  
               {  
                   model.ParentCodeNO = obj.ToString();  
               }  
     
               obj = dataReader["ZT"];  
    f (obj != null && obj != DBNull.Value)  
               {  
                   model.ZT = obj.ToString();  
               }  
     
    eturn model;  
           }  
     
         }  
      

     
    4.Bll层(跟具体业务有关的逻辑)

    [c-sharp] view plaincopy

     
    odenamespace SFS.BLL  
      
    // <summary>
    // 业务逻辑类bllADDRESS 的摘要说明。
    // </summary>
    ublic class c_hbbb_code  
       {  
    rivate readonly SFS.DAL.c_hbbb_code dal = new SFS.DAL.c_hbbb_code();  
    ublic c_hbbb_code()  
           { }  
           #region  成员方法
    // <summary>
    // 是否存在该记录
    // </summary>
    ublic bool Exists(string CodeID)  
           {  
    ry
               {  
    eturn dal.Exists(CodeID);  
               }  
    atch (ExceptionBase ex)  
               {  
                   SFS.Utility.ExceptionUtility.ExceptionHelper.HandleException(ex, Policy.BLLPolicy);  
    eturn false;  
               }  
           }  
     
    // <summary>
    // 增加一条数据
    // </summary>
    ublic int Add(SFS.Entity.Model.c_hbbb_code model)  
           {  
    ry
               {  
    eturn dal.Add(model);  
               }  
    atch (ExceptionBase ex)  
               {  
                   SFS.Utility.ExceptionUtility.ExceptionHelper.HandleException(ex, Policy.BLLPolicy);  
    eturn 0;  
               }  
           }  
     
    // <summary>
    // 更新一条数据
    // </summary>
    ublic int Update(SFS.Entity.Model.c_hbbb_code model)  
           {  
    ry
               {  
    eturn dal.Update(model);  
               }  
    atch (ExceptionBase ex)  
               {  
                   SFS.Utility.ExceptionUtility.ExceptionHelper.HandleException(ex, Policy.BLLPolicy);  
    eturn 0;  
               }  
           }  
     
    // <summary>
    // 删除一条数据
    // </summary>
    ublic int Delete(string CodeID)  
           {  
    ry
               {  
    eturn dal.Delete(CodeID);  
               }  
    atch (ExceptionBase ex)  
               {  
                   SFS.Utility.ExceptionUtility.ExceptionHelper.HandleException(ex, Policy.BLLPolicy);  
    eturn 0;  
               }  
           }  
     
    // <summary>
    // 得到一个对象实体
    // </summary>
    ublic SFS.Entity.Model.c_hbbb_code GetModel(string CodeID)  
           {  
    ry
               {  
    eturn dal.GetModel(CodeID);  
               }  
    atch (ExceptionBase ex)  
               {  
                   SFS.Utility.ExceptionUtility.ExceptionHelper.HandleException(ex, Policy.BLLPolicy);  
    eturn null;  
               }  
           }  
     
     
    // <summary>
    // 获得数据列表
    // </summary>
    ublic DataSet GetDataSet(string strWhere)  
           {  
    ry
               {  
    eturn dal.GetDataSet(strWhere);  
               }  
    atch (ExceptionBase ex)  
               {  
                   SFS.Utility.ExceptionUtility.ExceptionHelper.HandleException(ex, Policy.BLLPolicy);  
    eturn null;  
               }  
           }  
     
    // <summary>
    // <summary>
    // 获得数据列表
    // </summary>
    ublic List<SFS.Entity.Model.c_hbbb_code> GetList(string strWhere)  
           {  
    ry
               {  
    eturn dal.GetList(strWhere);  
               }  
    atch (ExceptionBase ex)  
               {  
                   SFS.Utility.ExceptionUtility.ExceptionHelper.HandleException(ex, Policy.BLLPolicy);  
    eturn null;  
               }  
           }  
     
     
           #endregion  成员方法
     
     
     
       }  
      

    5.UI层(用户界面)

    常用界面功能代码

    image

    加载数据

    private void LoadData(string SJJG)

    {

    SFS.Bll.c_hbbb_code objC_SUBCOMPANY=new SFS.Bll.c_hbbb_code();

    this.GridView1.DataSource = objC_SUBCOMPANY.GetList(“”);

    this.GridView1.DataBind();

    }

    分页

    protected voidGridView1_PageIndexChanging(objectsender,GridViewPageEventArgs e)

    {

    this.GridView1.PageIndex = e.NewPageIndex;

    LoadData(“”);

    }

    绑定时自动加入序号

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

    {

    if (e.Row.RowType == DataControlRowType.DataRow)

    {

    RadioButton rb = (RadioButton)e.Row.FindControl("rbSelect");

    rb.Attributes.Add("onclick", "CheckOne(this);");

    e.Row.Cells[1].Text = Convert.ToString(e.Row.RowIndex + 1);

    }

    }

    添加

    protected void btnAdd_Click(object sender, EventArgs e)

    {

    Response.Redirect("Add.aspx?JGDM=" + SJJG);

    }

    删除

    protected void btnUpdate_Click(object sender, EventArgs e)

    {

    foreach (GridViewRow row in GridView1.Rows)

    {

    RadioButton radio = row.FindControl("rbSelect") as RadioButton;

    if (radio != null && radio.Checked)

    {

    Label lblID = (Label)row.FindControl("lblJGDM");

    Response.Redirect("Delete.aspx?JGDM=" + SJJG);

    break;

    }

    }

    }

    修改

    protected void btnUpdate_Click(object sender, EventArgs e)

    {

    foreach (GridViewRow row in GridView1.Rows)

    {

    RadioButton radio = row.FindControl("rbSelect") as RadioButton;

    if (radio != null && radio.Checked)

    {

    Label lblID = (Label)row.FindControl("lblJGDM");

    Response.Redirect("Update.aspx?JGDM=" + SJJG);

    break;

    }

    }

    }

    一般写界面代码逻辑顺序

    image

  • 相关阅读:
    markdown编辑器使用教程
    【android】shape的使用
    检测android机器是否有GPS模块
    java.io.FileNotFoundException: res/drawable/title_bar_shadow.9.png
    【Arcgis for android】程序运行出错原因分析及解决(超详细)
    百度地图android客户端的AndroidMainfest.xml的学习和android版本号
    Android proguard代码混淆
    Posting data to a HttpHandler greater then ~29MB gives a 404 error
    工具和软件收藏
    C#实现在Winform中嵌入Word和Excel
  • 原文地址:https://www.cnblogs.com/sczw-maqing/p/3366977.html
Copyright © 2011-2022 走看看