文章出處

回到目錄

返回異步與并行目錄

在寫完倉儲接口的改造改造后,總覺得有個代碼的壞味道,這種味道源于它的DRP,即重復的代碼太多了,即異步操作和同步操作其實只是在insert,update和delete上有所不同,獲取數據的方法都是一樣的,所以,我最后決定,將異步的接口進行改造,讓它更加合理,方法后都加上Async的后綴,看上去也更像是個異步方法,呵。

改造后的異步接口

  /// <summary>
    /// 異步操作
    /// 基礎的數據操作規范
    /// 與ORM架構無關
    /// </summary>
    /// <typeparam name="TEntity"></typeparam>
    public interface IRepositoryAsync<TEntity>
           where TEntity : class
    {

        /// <summary>
        /// 添加實體并提交到數據服務器
        /// </summary>
        /// <param name="item">Item to add to repository</param>
        Task InsertAsync(TEntity item);

        /// <summary>
        /// 移除實體并提交到數據服務器
        /// 如果表存在約束,需要先刪除子表信息
        /// </summary>
        /// <param name="item">Item to delete</param>
        Task DeleteAsync(TEntity item);

        /// <summary>
        /// 修改實體并提交到數據服務器
        /// </summary>
        /// <param name="item"></param>
        Task UpdateAsync(TEntity item);

        /// <summary>
        /// 添加集合[集合數目不大時用此方法,超大集合使用BulkInsert]
        /// </summary>
        /// <param name="item"></param>
        Task InsertAsync(IEnumerable<TEntity> item);

        /// <summary>
        /// 修改集合[集合數目不大時用此方法,超大集合使用BulkUpdate]
        /// </summary>
        /// <param name="item"></param>
        Task UpdateAsync(IEnumerable<TEntity> item);

        /// <summary>
        /// 刪除集合[集合數目不大時用此方法,超大集合使用批量刪除]
        /// </summary>
        /// <param name="item"></param>
        Task DeleteAsync(IEnumerable<TEntity> item);
        /// <summary>
        /// 批量添加,添加之前可以去除自增屬性,默認不去除
        /// </summary>
        /// <param name="item"></param>
        /// <param name="isRemoveIdentity"></param>
        Task BulkInsertAsync(IEnumerable<TEntity> item, bool isRemoveIdentity);

        /// <summary>
        /// 批量添加
        /// </summary>
        /// <param name="item"></param>
        Task BulkInsertAsync(IEnumerable<TEntity> item);

        /// <summary>
        /// 批量更新
        /// </summary>
        /// <param name="item"></param>
        Task BulkUpdateAsync(IEnumerable<TEntity> item, params string[] fieldParams);

        /// <summary>
        /// 批量刪除
        /// </summary>
        /// <param name="item"></param>
        Task BulkDeleteAsync(IEnumerable<TEntity> item);
    }

而原來的IExtendRepository同時去繼承同步和異步兩個倉儲接口

而在調用上,開發者們更清楚自己使用的是同步還是異步方法

回到目錄

返回異步與并行目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()