一般的实体框架都包括以下一些功能:
### 1、与物理存储交互
原因很简单,数据不能总在内存里,最终还是要存起来,所以,实体框架的一个基本功能就是要解决与物理存储之间的交互问题。这里的物理存储主要包括文件和数据库系统,以文件作为实体的物理存储方式,虽然不是很普遍,但也有用武之地,一些很小的应用系统,表不多,数据之间的关系不是很复杂的情况下,也可以直接采用文件进行存储,没必要为这种很小的应用还附带上一个数据库。就是采用了数据库,有些配置信息也可以放在文件中。
以数据库作为实体的物理存储方式,是目前应用系统普遍采用的一种方式,因此一般的实体框架都需要支持与数据库进行交互的功能:
A)支持多种数据库,至少要支持几种主流的数据库系统(屏蔽数据库差异);
B)支持对数据库的基本操作(定义,新增,修改,删除,查询等)
C)支持数据库事务
D)支持缓存与数据库之间的数据同步(这条不是必须,但好的框架至少要预留对这种需求的扩展).
2、对实体的管理
对实体的管理以下一些功能是基本的:
A)对实体的新增,修改,删除和查询并将这些操作最终反映到数据库;
B)SQL语句支持(有些事情无法完全针对实体完成的时候,还是要预留这种功能)
C)事务支持(最终要反映到数据库事务上来,好的还会支持跨数据事务)
D)实体缓存服务(包括是否需要缓存,缓存机制,失效策略等),如果更进一步,还应该支持数据缓存加载条件设置(这种功能其实很简单,但目前的很多框架都没有这种功能)
E) 支持缓存还必须提供缓存与数据库的数据同步机制;
F)如果支持缓存,也必须提供并发冲突检测和处理机制;
有些功能还提供一些更强大的功能:
A)实体高级查询,比如关联查询,子查询等。例如ESQL跟SQL就很相似。
B)实体操作的批处理。
C)实体操作类的单例、多例模式支持
上面列的基本都是实体框架应该提供的一些基本功能,还有一些实体有效性检查之类的功能,可以集成在这里,也可以不集成在这里,但一些规则性的东西还是需要提供,比如以元属性方式提供校验规则等。