后,总觉得有个代码的坏味道,这种味道源于它的DRP,即重复的代码太多了,即异步操作和同步操作其实只是在insert,update和delete上有所不同,获取数据的方法都是一样的,所以,我最后决定,将异步的接口进行改造,让它更加合理,方法后都加上Async的后缀,看上去也更像是个异步方法,呵。
改造后的异步接口
////// 异步操作 /// 基础的数据操作规范 /// 与ORM架构无关 /// ///public interface IRepositoryAsync where TEntity : class { /// /// 添加实体并提交到数据服务器 /// /// Item to add to repository Task InsertAsync(TEntity item); ////// 移除实体并提交到数据服务器 /// 如果表存在约束,需要先删除子表信息 /// /// Item to delete Task DeleteAsync(TEntity item); ////// 修改实体并提交到数据服务器 /// /// Task UpdateAsync(TEntity item); ////// 添加集合[集合数目不大时用此方法,超大集合使用BulkInsert] /// /// Task InsertAsync(IEnumerableitem); /// /// 修改集合[集合数目不大时用此方法,超大集合使用BulkUpdate] /// /// Task UpdateAsync(IEnumerableitem); /// /// 删除集合[集合数目不大时用此方法,超大集合使用批量删除] /// /// Task DeleteAsync(IEnumerableitem); /// /// 批量添加,添加之前可以去除自增属性,默认不去除 /// /// /// Task BulkInsertAsync(IEnumerableitem, bool isRemoveIdentity); /// /// 批量添加 /// /// Task BulkInsertAsync(IEnumerableitem); /// /// 批量更新 /// /// Task BulkUpdateAsync(IEnumerableitem, params string[] fieldParams); /// /// 批量删除 /// /// Task BulkDeleteAsync(IEnumerableitem); }
而原来的IExtendRepository同时去继承同步和异步两个仓储接口
而在调用上,开发者们更清楚自己使用的是同步还是异步方法