最近刚刚开始接触三层架构,师傅说表现层和业务逻辑层的分离比较复杂,先不要管,主要先熟悉业务逻辑层和数据访问层之间的分离.
对于一些简单的Sqlcommand,GridView的绑定这些问题,很简单的就可以实现,而且这样的操作用的比较多.
但是,对于一些比较复杂,用的次数又很少的数据库操作,需要用在类里先定义吗.
比如下面这个例子,是把数据库里的数据绑定到CheckBoxList上,只用到了一次,需要用类先定义吗?应该怎么定义?
string  PK_Project = Request["PK_Project"].ToString();
        con.Open();
        string sqlstrGet = "select FlowName from ProjectFlow where PK_Project='" + PK_Project + "'";
        SqlDataAdapter sdaGet = new SqlDataAdapter(sqlstrGet, con);
        DataSet ds = new DataSet();
        sdaGet.Fill(ds, "ProjectFlow");
        for (int i = 0; i < chkBoxListFlow.Items.Count; i++)
        {
            for (int j = 0; j < ds.Tables["ProjectFlow"].Rows.Count; j++)
            {
                if (chkBoxListFlow.Items[i].Text == Convert.ToString(ds.Tables["ProjectFlow"].Rows[j]["FlowName"]))
                {
                    chkBoxListFlow.Items[i].Selected = true;
                }
            }
        }
        con.Close();

解决方案 »

  1.   

    先写数据访问层,里面写 con.Open();
            string sqlstrGet = "select FlowName from ProjectFlow where PK_Project='" + PK_Project + "'";
            SqlDataAdapter sdaGet = new SqlDataAdapter(sqlstrGet, con);
            DataSet ds = new DataSet();
            sdaGet.Fill(ds, "ProjectFlow");这些
    然后写业务层,调用这个结果,再写页面层里绑定业务层里的实现。
      

  2.   

    三层模式一个最基础的教程,甚至比Petshop还简单的:Data Access Tutorial
      

  3.   

    既然是三层,就要按照三层的模式来写,性能上的考虑不是主要的。楼主的例子实际上已经变成一层了。三层的好处就是表现层之一不必管数据服务层的东西,所以以后你不用SQL 数据库时也不必再修改表现层。楼主的例子中如果那天改用 Access或Oracle数据库,整个表现层或者说网页都要改。
      

  4.   

    项目需求。
    如果项目很小,
    你分层是没有多大的意义,而且降低程序的性能。
    但是项目大了,就有必要了,
    一个维护方便,
    一个是移植方便,比如我要把b/s改成c/s
    或者我要把sql server 改成oracle