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

推荐订阅源

Jina AI
Jina AI
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
J
Java Code Geeks
博客园 - 聂微东
B
Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
腾讯CDC
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Azure Blog
Microsoft Azure Blog
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
美团技术团队
博客园 - Franky
Google DeepMind News
Google DeepMind News
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
The Cloudflare 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.生成实体类时,最好直接从数据库中提取一些字段信息生成验证标记

示例代码如下:

代码