zoukankan      html  css  js  c++  java
  • 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同时去继承同步和异步两个仓储接口

    而在调用上,开发者们更清楚自己使用的是同步还是异步方法

    回到目录

    返回异步与并行目录

  • 相关阅读:
    2w字 + 40张图带你参透并发编程!
    完了,这个硬件成精了,它竟然绕过了 CPU...
    一文详解 Java 并发模型
    详解匈牙利算法与二分图匹配
    机器学习 | 详解GBDT在分类场景中的应用原理与公式推导
    Python | 浅谈并发锁与死锁问题
    LeetCode 91,点赞和反对五五开,这题是好是坏由你来评判
    LeetCode 90 | 经典递归问题,求出所有不重复的子集II
    【Azure DevOps系列】什么是Azure DevOps
    MSIL入门(四)之委托delegate
  • 原文地址:https://www.cnblogs.com/lori/p/4143960.html
Copyright © 2011-2022 走看看