代码改变世界

.net实体新解

2011-11-15 19:14  dreamhappy  阅读(2736)  评论(3编辑  收藏  举报

传统的开发模型中一般会有一个实体层(这里的实体和MVC开发框架中的实体不是一个概念),
这个实体层中的类,是数据库表在应用程序的映射,甚至类名称会与表一一对应.虽然是类,但是组成却只有属性,没有方法.
这类实体的作用是传递数据的载体,简洁明了,例如当一个方法参数个数超过3个,而这这三个参数又代表一个表的
相应字段时,他们就可以用一个实体类代替.


以上算是实体类的一个优势,当然它的优势不仅如此.

我们想想在数据层返回查询数据时,有几种格式?
一般会返回单个字段,单个DataTable,甚至是DataSet

单个字段很明了,我们暂且不提.说说DataTable,既然是DataTable,就是行的集合,每一行就可以用实体类
来映射,所以在数据返回dataTable时,可以直接将其转化为实体集合。这样做的再外层调用时会比DataTable
更直观,直接知道操作的是哪个具体的对象。

这种方法一般应用的场景:
单表查询,获得连表查询时表之间有继承关系,没有继承关系的连表查询的结果没法用一个实体表示,所以无法映射为实体集合。

开发过程中有一个原则是封装变化

我们在数据层操作数据表时肯定用到sql语句。select * from TableName(出于性能和规范原因,我不会直接用*,而是用相应的字段),好的,说到这里,变化出现了,就是这个查询字段
select ColumName from TableName ,处于业务或者其它因素,通常我们的数据库字段会修改,这时我们就必须整个项目查找使用过该字段的方法,进行替换。
既然实体层是数据库与应用程序映射的纽带,何不把实体层做下扩充呢?
我们在实体类中加一个字段,其值就是数据表中的字段名称,在各个工程,各个方法中需要用到相应的字段都通过特定的实体类调用,
当数据库发生变化时,重新生成实体类,其它工程不需要变化,数据访问层的sql语句也显得整洁和清晰。