惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Last Watchdog
The Last Watchdog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
L
LINUX DO - 最新话题
C
Check Point Blog
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
S
Security @ Cisco Blogs
IT之家
IT之家
T
The Exploit Database - CXSecurity.com
The GitHub Blog
The GitHub Blog
D
Docker
Engineering at Meta
Engineering at Meta
AWS News Blog
AWS News Blog
S
Security Affairs
U
Unit 42
P
Palo Alto Networks Blog
V
Visual Studio Blog
Y
Y Combinator Blog
D
DataBreaches.Net
Forbes - Security
Forbes - Security
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
Security Latest
Security Latest
aimingoo的专栏
aimingoo的专栏
Simon Willison's Weblog
Simon Willison's Weblog
A
Arctic Wolf
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hacker News: Front Page
博客园 - 司徒正美
博客园 - Franky
宝玉的分享
宝玉的分享
TaoSecurity Blog
TaoSecurity Blog
Latest news
Latest news
Scott Helme
Scott Helme
MongoDB | Blog
MongoDB | Blog
量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
P
Privacy International News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog

博客园 - 七思软件

基于.Net架构设计之六 基于.Net的架构设计之五 基于.Net架构设计之四 基于.Net架构设计之三 基于.Net架构设计之二 基于.Net的架构设计之一 Microsoft.Visual.Studio.2005.Team.System 面象asp.net2.0的MasterControls控件 aspx页面中标题单点解决方案 求助,web应用程序中的进程线程控制 (The 'url' property had a malformed URL)求助 - 七思软件 Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0功能体验,欢迎光临指导 C#中泛型求助 C#2.0中可空类型 迎接.Net2.0 我只是一只碌碌无为的工蚁 : ( 论Web控件开发 - 完美上传下载控件“新”(五)
基于.Net的架构设计之七
七思软件 · 2009-12-01 · via 博客园 - 七思软件

三、实体层

实体对象通常是将底层的关系数据记录,表述为上层的数据对象,这一层次最主要的职责在于关系数据和实体之间的相互转换及实体的验证。从架构角度来讲我们可以通过下面的一些措施来帮助程序员开发:

1.开发实体对象基类,实现数据转换及验证框架,开发实体基类时我觉得至少要考虑以下几点:

 a.提供缺省构造方法以及通过标记实体属性映射,来实现从IDataReader\DataRow\其他对象来填充数据实体的构造方法。

 b.数据实体对象应为可序列化的,并且实现ICloneable接口。

 c.为了通过关键字比较实体对象,还应重写Equals和GetHashCode方法,另外为了更友好显示实体信息可重写ToString()方法。

   d.通过标记属性,在运行时通过反射实现实体单个属性的验证,而通过自定义的可重写的虚拟验证方法来实现复杂的,多属性的实体验证。

示例代码如下:

代码

2.编写生成工具,可以通过生成工具自动生成实体对象,生成文件时可以考虑以下措施

 a.生成的实体类,最好分成两个文件,一个为{EntityName}Base.cs,而另一个为{EntityName}.cs,其中{EntityName}.cs中的类从{EntityName}Base.cs继承,而{EntityName}Base.cs再从架构中实体对象基类继承,所有生成的代码就保存在{EntityName}Base.cs中,我们可以在{EntityName}.cs中通过编写代码来重写底层中定义的属性及自验证方法等。

   b.生成实体类时,最好直接从数据库中提取一些字段信息生成验证标记

示例代码如下:

代码