在上一篇中我曾提到过要组建实体框架,不管我的出发点是好还是坏,我总算把它做出了一个雏形,并且已经能够加入到项目中使用了,当然还有许多的事情要处理,也需要更多的实例验证,才能不断的完善。
相比以前的FaibClass.Data,它已经显得更强大了,但是还没有实现实体的继承关系。
Fireasy系列组件是在.net framework 4.0环境下编写的,但是没有使用太多的4.0特性,Fireasy.Data.Entity还包括两个依赖组件:Fireasy.Common和Fireasy.Data。
今天首先开个序,详细的功能我会慢慢的介绍,下面先晒一下Fireasy.Data.Entity的特性:
1、依赖属性
采用依赖属性的方式进行定义,属性分为普通属性和特殊属性,普通属性是数据库字段所对应的属性,特殊属性包括引用实体属性、实体集属性、引用属性、枚举文本属性和同步属性(暂未实现)。这跟EF里的叫法差不多,不过遗憾的是EF不支持枚举的定义。
依赖属性定义为静态成员,并且放入缓存中进行管理,实体属性的读取或赋值与WPF里类似,也是使用GetValue和SetValue两个方法。
属性修改时提供了通知事件,以后还要加入属性的验证特性。
2、按需更新
在对一个实体对象进行修改的时候,只把更改过的属性值写进去,这样能够避免不必要的操作。并且,如果实体对象所关联的实体或实体集被修改,也会将相应的改变更新到数据库。如果将一个特殊属性设为null,也会删除该属性原来的对象。
实体更新的深度只限有两层,这主要是考虑到执行效率,不断的逐层更新也是可以的,但这样效率将大大降低。比如,一个实体对象的更新,可以同时更新它的引用实体A和实体集S,但是引用实体A的引用实体B是无法更新到的。
3、延迟加载
对引用实体和实体集属性,可设定三种行为进行加载,如果用在WCF或WS中,如果始终加载或延迟加载,都将造成所有数据的一次性加载,此时可以将加载过程关闭,而采用手动方式在需要的时候再获取。
4、删除标记
提供了假删除的支持,在属性定义的时候可以标记该属性是否是删除标记,在之后的所有查询将过滤标记为true的实体,在执行删除时,可以决定是彻底删除呢还是假删除。
5、环境变量
可以将一个实体映射到不同的数据表,比如按年度进行划分,2010年使用 TB_USER_2010,2011年使用TB_USER_2011等,以解决大数据存储的问题。也可以由具体的环境,比如用户、部门等变量来组合映射。
6、实体树
提供了实体树的插入、移动、删除、查找等功能,只要定义相关的映射信息,即可快速实现树型结构的管理。实体树采用内码的方式进行管理,如0001,00010001。
7、LINQ查询
本框架也提供了LINQ查询的支持,目前支持sqlserver、oracle、sqlite和mysql等几种常用数据库语法的解析。
8、环境事务
与TransactionScope类似,为一代码段提供事务控制。
好象就以上这些东东,详细的使用方法将会在以后一一进行介绍。