现在的位置: 首页 > 综合 > 正文

业务逻辑层

2013年08月12日 ⁄ 综合 ⁄ 共 5013字 ⁄ 字号 评论关闭

在实现了数据访问层的Database类之后,下面来实现业务逻辑层。本例的业务逻辑层只包含一个类Category,它代表了一个货物分类,只有一个方法LoadData(),用于根据分类的编号,获取分类的详细信息;另外具有3个属性,分别代表分类的编号、名称和说明信息。如图19.7所示。

图19.7  Category类的类图

 

同DataAccessLayer相似,也为业务逻辑层新建一个文件夹BusinessLogicLayer,然后在该文件夹中新建一个CS文件Category.cs,用于实现Category类,代码如下。

代码19-12  Category类实现:BusinessLogicLayer/Category.cs

1.              /**********************************************************

2.              * 示例:Web系统的三层体系结构之

3.              * 业务逻辑层

4.              *********************************************************/

5.              using System;

6.              using System.Data;

7.             

8.              using NorthWind.DataLayer;

9.             

10.             namespace NorthWind.BusinessLayer

11.             {

12.                                 /// <summary>

13.                                 /// 获取种类类,一个Category对象表示一种货物种类

14.                                 /// </summary>

15.                                 public class Category

16.                                 {

17.                                                       //私有成员

18.                                                       private int _categoryID;       //编号

19.                                                       private string _categoryName; //名称

20.                                                       private string _description;   //说明

21.            

22.                                                       //属性

23.                                                       public int CategoryID

24.                                                       {

25.                                                                             set{this._categoryID=value;}

26.                                                                             get{return this._categoryID;}

27.                                                       }

28.                                                       public string CategoryName

29.                                                       {

30.                                                                             set{this._categoryName=value;}

31.                                                                             get{return this._categoryName;}

32.                                                       }

33.                                                       public string Description

34.                                                       {

35.                                                                             set{this._description=value;}

36.                                                                             get{return this._description;}

37.                                                       }

38.            

39.                                                       //方法

40.                                                       /// <summary>

41.                                                       /// 根据参数categoryID,获取货物详细信息

42.                                                       /// </summary>

43.                                                       /// <param name="categoryID">货物种类编号</param>

44.                                                       public void LoadData(int categoryID)

45.                                                       {

46.                                                                             Database db=new Database();     //实例化一个Database类

47.            

48.                                                                             string sql="Select * from Categories where CategoryID = "+categoryID;

49.                                                                             DataSet ds=db.GetDataSet(sql);//利用Database类的GetSet方法查询数据

50.            

51.                                                                             //根据查询得到的数据,对私有成员赋值

52.                                                                             if(ds.Tables[0].Rows.Count>0)

53.                                                                             {

54.                                    this._categoryID=Convert.ToInt32(ds.Tables[0].Rows[0]                                                                         ["CategoryID"]);

55.                       this._categoryName=ds.Tables[0].Rows[0]["CategoryName"].                                                                                                        ToString();

56.                       this._description=ds.Tables[0].Rows[0]["Description"].                                                                                      ToString();

57.                                                                             }

58.                                                       }

59.                                 }

60.             }

代码实现了Category类,具体解释如下。

(1)第1~4行为文档注释。

(2)第5~6行为系统引入的.NET命名空间。

(3)第8行为系统引入的数据访问层命名空间NorthWind.DataAccess。

(4)第17~20行定义了Category类的3个私有成员,分别为货物分类的编号、名称和说明。

(5)第22~37行实现了与Category类私有成员对应的属性,3个属性均可读写。

(6)第39~59行实现了Category类的LoadData方法,该方法接受一个int型的参数categoryID,并根据这个参数获取货物分类的详细信息,把详细信息赋予私有成员。在方法实现中,第49行使用了Database类的GetDataSet方法,在本例中,因为CategoryID为Categories表的主键,那么DataSet中只可能包含一个数据表,数据表中也至多包含一行数据。

如果包含数据,那么就在第52~57行把DataSet中这唯一的一行数据中的值赋予Category类的各个成员。

抱歉!评论已关闭.