日期:2014-05-17  浏览次数:20751 次

这段用三层架构应该怎么写
private void frmAddressBook_Load(object sender, EventArgs e)
  {
  AllGroup();
  }

  #region 方法:添加所有分组
  public void AllGroup()
  {
  #region 添加我的通讯录和未分组联系人
  TreeNode pNode = new TreeNode(); //新建根节点
  pNode.Text = "我的通讯录";
  tvwGroup.Nodes.Add(pNode);
  tvwGroup.Nodes[0].Nodes.Add("未分组联系人");
  #endregion

  SqlConnection Conn = new SqlConnection("server=CL-PC\\SQLEXPRESS;database=AddressBookDB;pwd=sa ;uid=sa");
  SqlCommand Comm = new SqlCommand();
  SqlDataReader dr = null;
  #region 连接数据库:添加子节点
  Conn.Open();
  Comm.Connection = Conn;
  Comm.CommandText = "select Name from Groups";
  try
  {
  dr = Comm.ExecuteReader();
  while (dr.Read())
  {
  if (pNode.Text == "我的通讯录")
  {
  pNode.Nodes.Add(dr[0].ToString());
  }
  }
  }
  catch (Exception)
  {
  throw;
  }
  finally
  {
  dr.Close();
  Conn.Close();
  }
  #endregion
  }
  #endregion



分别把哪些东西写哪个层

------解决方案--------------------
注意,不是糊弄自己、把工程或者文件夹分成几个“层”就叫三层。也不是弄个什么“代码生成器”来生成代码就叫作三层。

三层的概念,是指这三层相互不依赖:业务逻辑层从来不依赖表现层,并且DAL层也从来不依赖业务层。于是底层可以作为服务而预先独立进行了逻辑设计、独立开发、灵活地适配各种应用。于是分出三层来了。
------解决方案--------------------
DAL:数据库的操作
Bll:业务逻辑
web:操作界面
多看看上面的sp大牛说的
------解决方案--------------------
wpf有一个树形管理的例子(MVVM),那个严格实现分层,

但在winform下面不适合太严格的分层。

一般你要抽出一个数据层,
所有与数据库打交道的代码都放在数据层,
比如你上面的 

SqlConnection Conn = new SqlConnection("server=CL");
SqlCommand Comm = new SqlCommand();
SqlDataReader dr = null;
#region 连接数据库:添加子节点
Conn.Open();
Comm.Connection = Conn;
Comm.CommandText = "select Name from Groups";

数据层返回 实体对象 或 实体集合,或者 DataTable 之类的。
然后界面根据数据层的返回来刷新处理数据。
省略了业务层,大量的业务逻辑实际在数据层完成了,比如增加/修改/删除/逻辑验证等

------解决方案--------------------
楼主要学这些架构可以参照现在你看市场上那些快速开发平台怎么架构的!