基于.NET平台的分层架构实战(四)——实体类的设计与实现

   实体类是现实实体在计算机中的表示。它贯穿于整个架构,负担着在各层次及模块间传递数据的职责。一般来说,实体类可以分为“贫血实体类”和“充血实体类 ”,前者仅仅保存实体的属性,而后者还包含一些实体间的关系与逻辑。我们在这个Demo中用的实体类将是“贫血实体类”。

      大多情况下,实体类和数据库中的表(这里指实体表,不包括表示多对多对应的关系表)是一一对应的,但这并不是一个限制,在复杂的数据库设计中,有可能出现 一个实体类对应多个表,或者交叉对应的情况。在本文的Demo中,实体类和表是一一对应的,并且实体类中的属性和表中的字段也是对应的。

      在看实体类的代码前,先看一下系统的工程结构。

      如上图所示,在初始阶段,整个系统包括6个工程,它们的职责是这样的:
      Web——表示层
      Entity——存放实体类
      Factory——存放和依赖注入及IoC相关的类
      IBLL——存放业务逻辑层接口族
      IDAL——存放数据访问层接口族
      Utility——存放各种工具类及辅助类

      这只是一个初期架构,主要是将整个系统搭一个框架,在后续开发中,将会有其他工程被陆陆续续添加进来。

      我们的实体类将放在Entity工程下,这里包括三个文件:AdminInfo.cs,MessageInfo.cs,CommentInfo.cs,分别是管理员实体类、留言实体类和评论实体类。具体代码如下:

AdminInfo.cs:

AdminInfousing System;
 2
 3namespace NGuestBook.Entity
 4{
 5    /// <summary>
 6    /// 实体类-管理员
 7    /// </summary>

 8    [Serializable]
 9    public class AdminInfo
10    {
11        private int id;
12        private string name;
13        private string password;
14
15        public int ID
16        {
17            get return this.id; }
18            set this.id = value; }
19        }

20
21        public string Name
22        {
23            get return this.name; }
24            set this.name = value; }
25        }

26
27        public string Password
28        {
29            get return this.password; }
30            set this.password = value; }
31        }

32    }

33}

34


MessageInfo.cs:

MessageInfousing System;
 2
 3namespace NGuestBook.Entity
 4{
 5    /// <summary>
 6    /// 实体类-留言
 7    /// </summary>

 8    [Serializable]
 9    public class MessageInfo
10    {
11        private int id;
12        private string guestName;
13        private string guestEmail;
14        private string content;
15        private DateTime time;
16        private string reply;
17        private string isPass;
18
19        public int ID
20        {
21            get return this.id; }
22            set this.id = value; }
23        }

24
25        public string GuestName
26        {
27            get return this.guestName; }
28            set this.guestName = value; }
29        }

30
31        public string GuestEmail
32        {
33            get return this.guestEmail; }
34            set this.guestEmail = value; }
35        }

36
37        public string Content
38        {
39            get return this.content; }
40            set this.content = value; }
41        }

42
43        public DateTime Time
44        {
45            get return this.time; }
46            set this.time = value; }
47        }

48
49        public string Reply
50        {
51            get return this.reply; }
52            set this.reply = value; }
53        }

54
55        public string IsPass
56        {
57            get return this.isPass; }
58            set this.isPass = value; }
59        }

60    }

61}

62


CommentInfo.cs:

CommentInfousing System;
 2
 3namespace NGuestBook.Entity
 4{
 5    /// <summary>
 6    /// 实体类-评论
 7    /// </summary>

 8    [Serializable]
 9    public class CommentInfo
10    {
11        private int id;
12        private string content;
13        private DateTime time;
14        private int message;
15
16        public int ID
17        {
18            get return this.id; }
19            set this.id = value; }
20        }

21
22        public string Content
23        {
24            get return this.content; }
25            set this.content = value; }
26        }

27
28        public DateTime Time
29        {
30            get return this.time; }
31            set this.time = value; }
32        }

33
34        public int Message
35        {
36            get return this.message; }
37            set this.message = value; }
38        }

39    }

40}

41


      大家可以看出,实体类的代码很简单,仅仅是负责实体的表示和数据的传递,不包含任何逻辑性内容。下篇将介绍接口的设计。

posted @ 2009-04-28 11:03  Andy-阿杰  阅读(266)  评论(0)    收藏  举报