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

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

2013年02月01日 ⁄ 综合 ⁄ 共 2936字 ⁄ 字号 评论关闭

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

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

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

附件: f3.jpg

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

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

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

AdminInfo.cs:

AdminInfo

  1. 1using System;
  2. 2
  3. 3namespace NGuestBook.Entity
  4. 4{
  5. 5    /**//// <summary>
  6. 6    /// 实体类-管理员
  7. 7    /// </summary>
  8. 8    [Serializable]
  9. 9    public class AdminInfo
  10. 10    {
  11. 11        private int id;
  12. 12        private string name;
  13. 13        private string password;
  14. 14
  15. 15        public int ID
  16. 16        {
  17. 17            get { return this.id; }
  18. 18            set { this.id = value; }
  19. 19        }
  20. 20
  21. 21        public string Name
  22. 22        {
  23. 23            get { return this.name; }
  24. 24            set { this.name = value; }
  25. 25        }
  26. 26
  27. 27        public string Password
  28. 28        {
  29. 29            get { return this.password; }
  30. 30            set { this.password = value; }
  31. 31        }
  32. 32    }
  33. 33}
  34. 34

复制代码

MessageInfo.cs:

MessageInfo

  1. 1using System;
  2. 2
  3. 3namespace NGuestBook.Entity
  4. 4{
  5. 5    /**//// <summary>
  6. 6    /// 实体类-留言
  7. 7    /// </summary>
  8. 8    [Serializable]
  9. 9    public class MessageInfo
  10. 10    {
  11. 11        private int id;
  12. 12        private string guestName;
  13. 13        private string guestEmail;
  14. 14        private string content;
  15. 15        private DateTime time;
  16. 16        private string reply;
  17. 17        private string isPass;
  18. 18
  19. 19        public int ID
  20. 20        {
  21. 21            get { return this.id; }
  22. 22            set { this.id = value; }
  23. 23        }
  24. 24
  25. 25        public string GuestName
  26. 26        {
  27. 27            get { return this.guestName; }
  28. 28            set { this.guestName = value; }
  29. 29        }
  30. 30
  31. 31        public string GuestEmail
  32. 32        {
  33. 33            get { return this.guestEmail; }
  34. 34            set { this.guestEmail = value; }
  35. 35        }
  36. 36
  37. 37        public string Content
  38. 38        {
  39. 39            get { return this.content; }
  40. 40            set { this.content = value; }
  41. 41        }
  42. 42
  43. 43        public DateTime Time
  44. 44        {
  45. 45            get { return this.time; }
  46. 46            set { this.time = value; }
  47. 47        }
  48. 48
  49. 49        public string Reply
  50. 50        {
  51. 51            get { return this.reply; }
  52. 52            set { this.reply = value; }
  53. 53        }
  54. 54
  55. 55        public string IsPass
  56. 56        {
  57. 57            get { return this.isPass; }
  58. 58            set { this.isPass = value; }
  59. 59        }
  60. 60    }
  61. 61}
  62. 62

复制代码

CommentInfo.cs:

CommentInfo

  1. 1using System;
  2. 2
  3. 3namespace NGuestBook.Entity
  4. 4{
  5. 5    /**//// <summary>
  6. 6    /// 实体类-评论
  7. 7    /// </summary>
  8. 8    [Serializable]
  9. 9    public class CommentInfo
  10. 10    {
  11. 11        private int id;
  12. 12        private string content;
  13. 13        private DateTime time;
  14. 14        private int message;
  15. 15
  16. 16        public int ID
  17. 17        {
  18. 18            get { return this.id; }
  19. 19            set { this.id = value; }
  20. 20        }
  21. 21
  22. 22        public string Content
  23. 23        {
  24. 24            get { return this.content; }
  25. 25            set { this.content = value; }
  26. 26        }
  27. 27
  28. 28        public DateTime Time
  29. 29        {
  30. 30            get { return this.time; }
  31. 31            set { this.time = value; }
  32. 32        }
  33. 33
  34. 34        public int Message
  35. 35        {
  36. 36            get { return this.message; }
  37. 37            set { this.message = value; }
  38. 38        }
  39. 39    }
  40. 40}
  41. 41

复制代码

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

抱歉!评论已关闭.