博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大家一起来学习一下面向对象的三层架构吧!今天我来说说Entity有时也叫MODEL实体层!...
阅读量:6830 次
发布时间:2019-06-26

本文共 3599 字,大约阅读时间需要 11 分钟。

实体层,事实上就是数据库的对象化,把数据表抽象化,目前有很多这方面的工具,我们把这些工具称为ORM工具,即对象关系模型,microsoft在进入3.5时代后引入了LINQ的概念,LINQ的出现,大大提高了开发人员工作效率,它把传统的数据库直接对象了,并以IQueryable<T>的形式被以提供访问,它被称为是可查询的结果集,我们也可以把它理解为是一个VS项目里的数据库.

不说费话了,还是看看我的实体设计吧!

1:  #region 对实体层的实现
2:      /// 
3:      /// 实体通用接口
4:      /// 
5:      public interface IDataEntity
6:      {
7:      }
8:      /// 
9:      /// 实体验证接口
10:      /// 
11:      public interface IEntity
12:      {
13:          /// 
14:          /// 实体是否有效,只提供读方法,它直接返回本类某方法的类即可,所以不提供set
15:          /// 
16:          bool IsValid { get; }
17:          /// 
18:          /// 验证迭代器
19:          /// 
20:          /// 
21:          IEnumerable
GetRuleViolations();
22:      }
23:      /// 
24:      /// 验证类结构
25:      /// 
26:      public class RuleViolation
27:      {
28:          public string ErrorMessage { get; private set; }
29:          public string PropertyName { get; private set; }
30:          public RuleViolation(string propertyName, string errorMessage)
31:          {
32:              this.ErrorMessage = errorMessage;
33:              this.PropertyName = propertyName;
34:          }
35:          public RuleViolation(string errorMessage)
36:          {
37:              this.ErrorMessage = errorMessage;
38:          }
39:      }
40:      public partial class Department : IDataEntity
41:      {
42:          //初始字段
43:          #region original field
44:   
45:          /// 
46:          ///
47:          /// 
48:          public int DeptID { get; set; }
49:   
50:          /// 
51:          ///
52:          /// 
53:          public string DeptName { get; set; }
54:   
55:          /// 
56:          ///
57:          /// 
58:          public DateTime CreateDate { get; set; }
59:   
60:          /// 
61:          ///
62:          /// 
63:          public DateTime UpdateDate { get; set; }
64:   
65:          /// 
66:          ///
67:          /// 
68:          public string Operator { get; set; }
69:   
70:          /// 
71:          /// 上一级ID,最高级别的父ID为0
72:          /// 
73:          public int ParentID { get; set; }
74:   
75:          #endregion
76:
77:          //外延字段
78:          #region extensional field
79:          #endregion
80:
81:          //构造函数
82:          #region constructed function
83:   
84:          /// 
85:          /// 新建立的时候构造函数
86:          /// 
87:          public Department()
88:          {
89:   
90:          }
91:   
92:          /// 
93:          /// 新建立的时候构造函数
94:          /// 
95:          /// 
96:          public Department(Int32 _DeptID)
97:          {
98:              this.DeptID = _DeptID;
99:   
100:          }
101:   
102:          #endregion
103:
104:          //方法
105:          #region function
106:   
107:          #endregion
108:
109:          //重写方法
110:          #region object overrides
111:   
112:          #endregion
113:      }
114:   
115:      public partial class Department : IEntity
116:      {
117:   
118:          #region IEntity 成员
119:   
120:          public bool IsValid
121:          {
122:              get { return (GetRuleViolations().Count() == 0); }
123:          }
124:   
125:          public IEnumerable
GetRuleViolations()
126:          {
127:              if (String.IsNullOrEmpty(this.DeptName))
128:                  yield return new RuleViolation("不能为空", "DeptName");
129:              if (String.IsNullOrEmpty(this.Operator))
130:                  yield return new RuleViolation("不能为空", "Operator");
131:              yield break;
132:          }
133:   
134:          #endregion
135:      }
136:   
137:      #endregion

看清楚了吧,我们的实体是由两部分组成了,即"实体的基本属性"和"实体的验证机制"哈哈

去感受吧!

转载地址:http://dbjkl.baihongyu.com/

你可能感兴趣的文章
逻辑回归原理小结
查看>>
php 7.0 安装以及老版本php删除
查看>>
【Machine Learning】决策树案例:基于python的商品购买能力预测系统
查看>>
servlet生成验证码
查看>>
oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题
查看>>
Zing 5.0发布,包含原生支持Linux的无停顿垃圾回收器
查看>>
解决Fiddler不能监听Java HttpURLConnection请求的方法
查看>>
串的模式匹配算法---Horspool
查看>>
Python基础07 函数
查看>>
Android学习
查看>>
Windows Phone 7 EKB系列文章发布
查看>>
Jmeter(六)-关联设置
查看>>
Mvc 3 中的分部视图
查看>>
android学习笔记之ProgressDialog的使用
查看>>
hdu 4557 非诚勿扰 vector的应用 原来vector 可以删除指定位置元素 不过消耗大
查看>>
tomcat支持中文文件名下载
查看>>
PHP 时区设置
查看>>
UVALive 5790 Ball Stacking 解题报告
查看>>
深入redis内部--事件处理机制
查看>>
[再寄小读者之数学篇](2014-05-23 $\ln x-ax=0$ 有两个根时的估计)
查看>>