中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

EF架構~EF異步改造(zao)之路~倉儲接(jie)口(kou)的(de)改造(zao)~續

回到目錄

返回異步與并行目錄

在寫完倉儲接口的改造改造后(hou),總覺得有(you)個代(dai)碼(ma)的(de)(de)壞(huai)味道(dao),這種味道(dao)源于它(ta)的(de)(de)DRP,即重復的(de)(de)代(dai)碼(ma)太多(duo)了,即異步(bu)操作(zuo)(zuo)和同步(bu)操作(zuo)(zuo)其實只是(shi)在insert,update和delete上有(you)所不同,獲取數據的(de)(de)方(fang)法(fa)都(dou)(dou)是(shi)一樣的(de)(de),所以,我最后(hou)決(jue)定,將異步(bu)的(de)(de)接(jie)口進行改造(zao),讓它(ta)更加(jia)合理,方(fang)法(fa)后(hou)都(dou)(dou)加(jia)上Async的(de)(de)后(hou)綴,看上去(qu)也更像是(shi)個異步(bu)方(fang)法(fa),呵。

改造后的異步接口

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

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

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

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

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

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

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

        /// <summary>
        /// 批量添(tian)加
        /// </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>
        /// 批量(liang)刪除
        /// </summary>
        /// <param name="item"></param>
        Task BulkDeleteAsync(IEnumerable<TEntity> item);
    }

而原來的IExtendRepository同時(shi)去(qu)繼承同步和異步兩個倉(cang)儲接口

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

回到目錄

返回異步與并行目錄

posted @ 2014-12-04 21:46  張占嶺  閱讀(3180)  評論(8)    收藏  舉報