EF架構~EF異步改造之路~倉儲接口的改造~續


回到目錄

返回異步與並行目錄

在寫完倉儲接口的改造改造后,總覺得有個代碼的壞味道,這種味道源於它的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同時去繼承同步和異步兩個倉儲接口

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

回到目錄

返回異步與並行目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM