.NET三层的搭建

  • 格式:doc
  • 大小:336.00 KB
  • 文档页数:12

1.搭建数据访问层

(1)打开VS 2005开发环境,依次选择"文件"→"新建"→"项目"命令

(2)在打开的"新建项目"对话框中,选择项目类型为"Visual Studio解决方案",选择模板为"空白解决方案"。然后填写解决方案的名称为"Chat",并指定保存位置

(3)在"解决方案资源管理器"中,在解决方案名称上单击鼠标右键,在弹出的快捷菜单中选择"添加"→"新建项目"命令

(4)在打开的"新建项目"对话框中,选择项目类型为"Visual C#",选择模板为"类库"。填写项目的名称为"DAL",该项目用于实现数据访问层。此时项目的保存位置已经默认输入了,是刚才创建空白解决方案时产生的路径

2.搭建业务逻辑访问层

搭建业务逻辑层的步骤与搭建数据访问层类似,不同的是需要重新填写项目名称为"BLL",

3.搭建表示层

(1)在"解决方案资源管理器"中,在解决方案名称上单击鼠标右键,在弹出的快捷菜单中选择"添加"→"新建网站"命令

(2)在打开的"添加新网站"对话框中,选择"网站",选择位置为"文件系统",并设置网站的路径

在三层结构开发中,通常还会使用模型层。模型层包含所有与数据库中的表相对应的实体类。表示层、业务逻辑层和数据访问层三层之间通过传递实体对象来达到数据传递的目的。

创建模型层的步骤与搭建业务逻辑层和数据访问层类似,不同的是需要重新填写项目名称为"Models",

此时,在"解决方案资源管理器"中,三层结构的基本框架如图4所示

4.添加各层之间依赖关系

此时,虽然三层结构的基本框架已经搭建成功,但是各层之间是独立的。只有添加依赖关系,才能让它们相互协作。

(1)添加表示层对业务逻辑层及模型层的依赖。在"解决方案资源管理器"中,在表示层上单击鼠标右键,在弹出的快捷菜单中选择"添加引用"命令

(2)在打开的"添加引用"对话框中,选择"项目"选项卡,选中项目名称为"BLL"和"Models"的两个项目,单击"确定"按钮,

(3)使用上述方法在业务逻辑层中添加对数据访问层和模型层的依赖,以及数据访问层对模型层的依赖。

至此,三层结构及各层之间的依赖关系创建完毕。下面以登录为例,测试各层之间如何协同工作的。

1)编写实体类User.cs

在模型层中,将默认的类名Class1.cs重命名为"User.cs",该实体类与数据库Chat中的表User相对应。实体类User.cs中部分代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace MODEL

{

public class User {

声明用户属性#region 声明用户属性

//用户ID

public int UserID { get; set; }

//用户名

public string UserName { get; set; }

//用户密码

public string Pwd { get; set; }

//用户电子邮箱

public string Email { get; set; }

//用户积分

public int Score { get; set; }

#endregion

public User()

{

}

}

}

2)编写数据访问类UserService

针对模型层中的每个实体类,数据访问层有一个对应的数据访问类。例如,针对User实体类,创建一个对应的UserService类,用于对数据表Users的数据处理。

在UserService类中添加一个根据登录名进行查询的方法,代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.SqlClient;

using MODEL;

namespace DAL

{ public class UserService

{

#region 根据用户名,返回用户实体

///

/// 根据用户名,返回用户实体

///

/// 用户名

/// User

public static User GetUserByUserName(string strUserName)

{

//根据用户名,查询是否存在此用户

string strSqlGetUser = "select * from T_User where

UserName=@UserName";

SQLHelp help = new SQLHelp();

SqlDataReader dr = null;

SqlParameter[] para = {

new SqlParameter

("@UserName",strUserName)

};

//根据用户名,返回dataReader对象

dr = help.GetDRWithPara(strSqlGetUser, para);

//数据流中是否有数据

if (dr.Read())

{

//声明User对象,将数据流中的值赋给User对象

User newUser = new User();

erID = Convert.ToInt32(dr["UserID"]);

erName = dr["UserName"].ToString();

newUser.Pwd = dr["Pwd"].ToString();

newUser.Email = dr["Email"].ToString();

newUser.Score = Convert.ToInt32(dr["Score"]);

//关闭SqlDataReader对象,此时连接同时关闭

//详见SQLHelp:GetDRWithPara(string cmdText,

SqlParameter[] para)

//mycom.ExecuteReader(CommandBehavior.CloseConnection);

dr.Close();

return newUser;

}

else

{

dr.Close();

return null;

}

}

#endregion

}

代码中使用到的SQLHelp类详见/windows/articles/1602282.html

3)编写业务逻辑类UserManager

针对模型层中的每个实体类,业务逻辑层中也有一个对应的类。例如,针对User实体类,创建一个对应的UserManager类。

在UserManager类中添加用于登录验证的业务方法,其代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using MODEL;

using DAL;

namespace BLL

{

public class UserManager {

/**////

/// 验证用户登录

///

/// 用户名

/// 密码

/// 输出参数(User类型对象)

/// User类型对象

public static bool Login(string strUserName, string Pwd, out

User validUser)

{

//根据用户名获取用户信息,调用DAL层方法

User newUser =

UserService.GetUserByUserName(strUserName);

//不存在此用户

if (newUser == null)

{

validUser = null;

return false;

}

//密码错误

if (newUser.Pwd == Pwd)

{

validUser = newUser;

return true;

}

else

{

validUser = null;

return false;

}

}

}

}