- /// <summary>
- /// 查询服务组件
- /// </summary>
- /// <returns></returns>
- protected abstract IQuery GetQuery();
- #region IQuery 成员
- /// <summary>
- /// 查询所有记录
- /// </summary>
- /// <typeparam name="T">泛型模型</typeparam>
- /// <returns></returns>
- public IList<T> GetAll<T>() where T : class,new()
- {
- return GetQuery().GetAll<T>();
- }
- /// <summary>
- /// 查询满足条件的集合
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="whereCondition"></param>
- /// <returns></returns>
- public IList<T> GetListByQuery<T>(WhereCondition whereCondition) where T : class,new()
- {
- return GetQuery().GetAll<T>();
- }
- /// <summary>
- /// 返回总行数
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <returns></returns>
- public int GetCount<T>()
- {
- return GetQuery().GetCount<T>();
- }
- /// <summary>
- /// 返回满足条件的总行数
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="whereCondition"></param>
- /// <returns></returns>
- public int GetCount<T>(WhereCondition whereCondition)
- {
- return GetQuery().GetCount<T>(whereCondition);
- }
- /// <summary>
- /// 根据主键返回对象模型
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="key"></param>
- /// <returns></returns>
- public T GetModelByKey<T>(object key) where T : class,new()
- {
- return GetQuery().GetModelByKey<T>(key);
- }
- #endregion
当然根据不同的数据库可能定义的查询语句的格式不同,但是返回的结果的形式却可以定义成通用的形式。这样我们就可以实现比较通用的查询服务,也有很好
的通用型和扩展性。当然我们这里还可以添加分页的支持等,只是添加的条件有限制,实现方式还是相同。
下面我们来看看数据访问层功能必须职责之事务性,我们都知道事务性的几大特性,通过事务性来提供数据的安全性。我们这里给出一种思路去实现这样的事务
性,我们在数据访问层中定义一组事务单元,通过一个列表维护这些事务单元,当执行提交时,我们将这个事务范围内的所有事务单元进行提交,否则不进行真正的提
交操作。我们来看看吧,我们在之前的IDALIn