前几天构想过持久化组件关联对象加载的方式,经过一段时间的思考决定把构想方案实现出来;用于替换自己原有持久化组件的关联加载方式。为了使加载方式更灵活,于是采用接口方式来描述加载过程。采用接口的好处就是开发人员完全可以根据自己的需来制定加载的方式;如:实时加载、延时加载或两者结合。这次的实现主要是关联加载和关联删除,实现的原则就是尽量以插件的方式直入到原有持久化组件中,这样可以更好地保证原有功能正确性。原有组件在数据查询和删除时对关联处理上下文对象进行检测,根据开发人员的设置进行功能的切入执行。
组件类结构图:
关联上下文对象
为了方便操作采用泛型的方式代替params Type[]的类型传递方式,根据情况需要重载了多版本的设置方法;由于结构的限制在设计时只允许最多9个关系类型设置。
关联加载接口
HFSoft.Data.IDataSession session
用于描述当前处理的数据环境,通过此对象进行其他数据查询操作;当实现延时加载时可以取得相关的ConnectionString和Driver在数据加载时使用。
System.Collections.IList list
当前数据查询获取的列表
RelationAttribute relation
需要处理的关联描述
HFSoft.Data.Expressions.Expression exp
当前数据查询的条件,根据这个条件和relation映射出关联条件
关联删除接口
HFSoft.Data.IDataSession session
用于描述当前处理的数据环境,通过些对象进行其他数据删除操作
RelationAttribute relation
需要处理的关联描述
HFSoft.Data.Expressions.Expression exp
当前数据删除的条件,根据这个条件和relation映射出关联条件
关联描述对象
RelationAttribute主要用于标记对象关联的信息,些信息用于对象关联查询和对象关联删除操作的依赖。