技术开发 频道

数据库瓶颈非常好的良药:web三层架构

  完成前面的操作以后,开始建立数据访问层的类文件,这时,先在DAL项目下添加一个类文件,取名为DALEmployees.cs,其代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Auto.DAL
{
    
public class DALEmployees
    {
        
/// <summary>
        /// VS自动生成的数据模型
        /// </summary>
        NorthwindDataContext db = new NorthwindDataContext();
        
        
/// <summary>
        /// 根据条件获取数据列表方法
        /// </summary>
        /// <param name="strCity">城市地址</param>
        /// <returns>获取的Employees数据列表</returns>
        public IQueryable<Employees> GetList(string strCity)
        {
            
//根据城市地质,通过LINQ返回数据
            return from p in db.Employees
                      where p.City
== strCity
                      select p;
        }
    }
}

    这个数据访问层中只建立了一个用来根据城市地址获取Employee数据的方法,它内部执行一段LINQ,返回一个IQueryable型的结果,由于LINQ后期编译的特性,这个结果只有在程序运行后才会返回数据集。

  接着,建立业务逻辑层,在BLL项目中,添加一个类文件,取名为BLLEmployees.cs,其代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Auto.DAL;

namespace Auto.BLL
{
    
public class BLLEmployees
    {
        
/// <summary>
        /// 通过城市名获得Employee数据
        /// </summary>
        /// <param name="strCity">城市名</param>
        /// <returns>数据结果</returns>
        public IQueryable<Employees> GetList(string strCity)
        {
            DALEmployees de
=new DALEmployees();
            
//调用数据访问层的方法
            return de.GetList(strCity);
        }
    }
}

 

    这段代码完成了业务逻辑层的定义,建立了一个和数据访问层的同名方法GetList,用来传送城市名称参数。最后,在WEB Application项目中,添加对BLL层的应用,并在Default.aspx页面中添加一个GridView控件用来显示数据,Default.aspx.cs的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Auto.BLL;

namespace WebApplication2
{
    
public partial class _Default : System.Web.UI.Page
    {
        
protected void Page_Load(object sender, EventArgs e)
        {
            
if (!IsPostBack)
            {
                GetList(
"London");
            }
        }

        
/// <summary>
        /// 根据城市获取数据
        /// </summary>
        /// <param name="strCity">城市名称</param>
        private void GetList(string strCity)
        {
            
//执行业务逻辑层的方法
            BLLEmployees bl = new BLLEmployees();
            
//绑定到GridView1控件
            GridView1.DataSource = bl.GetList(strCity);
            GridView1.DataBind();
        }
    }
}

    完成后,执行程序,便可得到相关数据,整个程序的结构如下:

  总结:实际上,这个基于LINQ的架构是将数据模型层和数据访问层整合到一个项目中,它的特点就是开发快速,效率高,可以很方便的帮你完成数据模型的搭建,并且也便于后期修改,当数据表发生变动时,只选要修改dbml文件就可以了。但这个架构里有些地方还是不大完善,例如城市数据作为参数,应该也是以数据模型的方式来传送,但这里仅是按字符串传递,这样不利于数据的封装和安全。因此还需要在此处改进。总体来说,比以往的三层架构结构更加清晰了,如果再结合ASP.NET MVC架构来使用,就更加完美了。

0
相关文章