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同时去继承同步和异步两个仓储接口

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

回到目录

返回异步与并行目录

posted @   张占岭  阅读(3170)  评论(8编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
历史上的今天:
2013-12-04 EF架构~在ef中支持IQueryable级别的Contains被翻译成了Exists,性能可以接受!
2013-12-04 JS框架~Angularjs
2012-12-04 爱上MVC3系列~当Ajax.Beform不能满足我们的要求时...
2012-12-04 将不确定变为确定~MVC3的ValidateInput属性失灵了
2011-12-04 MVC中对controller的抽象
点击右上角即可分享
微信分享提示