很早前就已经有计划去做这样一个组件了(有部分地方是参考nhibernate的.
可能有些人会问nhibernate很不错为什么还要自己写一个?写得过程中可以学到很多东西的!
当然组件并没有nhibernate那么强大,代码量也远远不及nhibernate只有几千行);
由于工作关系和自己又是比较懒惰的人,所以到现在才完成大概的功能.
本来打算进一步完善后才把组件开源的,可惜工作和惰性原因:)不知道什么时候才完成.
所以在这里把组件公开,如果有兴趣的朋友对它进行修改和完善(注意:使用前请看下协议文件).
HFSOFT.DATA的目的主要是方便开发人员快速简单地完成数据操作,从而提高开发效率。
--现在版本所支持的功能有:
1.多数据库支持
暂时提供SQLServer,Access,Oracle数据库提供者.
可以通过IDriver实现新数据库提供者。
2.支持对象映射操作
对象添加
对象修改
对象查询
3.支持对象关系获取
子对象无限层次的获取,暂时只支持IList接口
父对象一层获取,支持对应类型的实体对象
暂时不支持关系对象更新操作
4.支持对象查询条件
提供的查询对象有:=,<>,>,>=,<,<=,like,In,NotIn,BETWEEN,Not BETWEEN
5.支持直接SQL的参数化查询
6.支持直接Command执行
7.支持IList,DataSet数据集获取
8.支持事务
--后续版本完善的功能
记录操作日志跟踪,可以根据自己的情况来实现日志操作类.
关系对象获取的改进,实现可指定获取相应的关系对象包括(不获取,获取所有,获取父,获取子,获取指定类型等);
关系对象更新操作,同样实现可指定类型更新.
命令对象缓存
实体对象缓存(还在想同步方案)
记录集缓存
--具体调用功能方法描述
- IDataReader ExecuteReader(IDbCommand cmd);
执行命令对象并返回一个数据读取对象
- object ExecuteScalar(IDbCommand cmd);
执行命令对象并返回一个对象值
- int ExecuteNonQuery(IDbCommand cmd);
执行命令对象并返回受影响的记录数
- DataSet ExecuteDataSet(IDbCommand cmd);
执行命令对象并返回一个数据集对象
- void ExcuteCmds(params IDbCommand[] cmd);
批执行命令对象
- void Open();
打开数据库连接
- void Close();
关闭数据库连接
- void BeginTran();
打开数据库事务
- void Commit();
提交事务
- void RoolBack();
回滚事务
- void Delete(object entity);
删除指定的实体对象
- void Save(object entity);
添加指定的实体对象
- void Update(object entity);
更新指定的实体对象
- object Load(Type type, object id);
获取指定类型索引的实体对象
- IList List(Type type, IExpression expression);
根据条件对象获取相应类型的对象集
- IList List(Type type, string query, object[] values);
根据参数化的SQL查询条件获取相应类型的对象集
- void DeleteObjects(Type type, IExpression expression);
根据条件对象删除相应类型的对象集
- void DeleteObjects(Type type, string query, object[] values);
根据参数化的SQL查询条件删除相应类型的对象集
- DataSet ListDS(Type type, IExpression expression);
根据条件对象获取相应类型的数据集
- DataSet ListDS(Type type, string query, object[] values);
根据参数化的SQL查询条件获取相应类型的数据集
- void UpdateObjects(Type type, FieldCollection fields, IExpression expression);
根据条件对象更新指定类型的字段信息
- void UpdateObjects(Type type, FieldCollection fields, string query, object[] values);
根据参数化的SQL查询条件更新指定类型的字段信息
- IQuery CreateQuery();
获取一个查询对象
下载应用事例和源码
如果有兴趣交流的朋友可以发邮件henryfan@msn.com或henryfan28@gmail.com