複数のテーブルの同時動作を実現Dapperの

1:Dapperのクエリーヘルパークラス、コードの一部、他の新しい更新自分自身を拡張することができます削除します

使用してMicrosoft.Extensions.Configurationを。
使用してシステムを。
使用してSystem.Collections.Genericを。
使用してSystem.Textのを。

名前空間FEG.ESB.Data.EF 
{ 
    使用Dapperのを、
    使用してMySql.Data.MySqlClientを。
    使用してSystem.Threading.Tasksを。
    使用して 静的Dapper.SqlMapperを。

    ///  <要約> 
    ///  
    ///  </要約> 
    パブリック クラスFEG_DapperHelper 
    { 
        プライベート 静的 文字列 STR = FEG_ConfigHelper.GetDbConnectionStr()。

        ///  <要約>
        /// 查询 
         ///  </要約> 
        ///  <typeparam名= "T"> </ typeparam> 
        ///  <PARAM NAME = "SQL"> </ PARAM> 
        ///  <PARAM NAME = "parames 「> </ PARAM> 
        ///  <戻る> </戻り> 
        パブリック 静的のIEnumerable <T>クエリー<T>(文字列のSQL、オブジェクト parames = NULLここで、 T:クラス新しい()
        { 
            試み
            { 
                使用 MySqlConnectionにCONN = GetMySqlConnnetion();
                返す conn.Queryを<
            }
            (例外)
            { 
                戻り ヌル
            } 
        } 

        ///  <要約> 
        /// 查询异步操作 
         ///  </要約> 
        ///  <typeparam名= "T"> </ typeparam> 
        ///  <PARAM NAME = "SQL"> </ PARAM > 
        ///  <PARAM NAME = "parames"> </ PARAM> 
        ///  <戻る> </戻り> 
        パブリック 静的 非同期タスク<のIEnumerable <T >> QueryAsync <T>(文字列のSQL、オブジェクト parames = NULL場合 T:クラス
        { 
            試みる
            { 
                使用 MySqlConnectionにCONN = )(GetMySqlConnnetion。
                戻り のawait conn.QueryAsync <T> (SQL、parames)。
            } 
            キャッチ(例外)
            { 
                戻り ヌル
            } 
        } 

        #region古い
         /// // <要約> 
        /// //查询两个实体的操作 
         /// // </要約> 
        /// // ます。<param name = "SQL"> </ param>の
        /// // ます。<param name = "parames"> </ param>の
         <リターン> <
        パブリック静的タプル<のIEnumerable <T>、IEnumerableを<M >> QueryTwoEntity <T、M>(文字列のSQL、オブジェクトparames = NULL)ここで、T:クラスここで、M:クラス、新しいです()
         // {
         //     試し
         //     {
         //         MySqlConnectionにCONN = GetMySqlConnnetion()を使用して、
        //         VARて、readData = conn.QueryMultiple(SQL、parames)。
        //         VAR OBJ = readData.Read <T>()のIEnumerable <T>として;
        //         VAR OBJ2 = readData.Read <M>()のIEnumerable <M>として;
        //         リターン(OBJ、OBJ2).ToTuple();
            キャッチ(例外)
         //    {
         //         戻りヌル。
        //     }
         // } 
        #endregion 

        ///  <要約> 
        /// 同时查询多个实体的操作
         ///  </要約> 
        ///  <PARAM NAME = "SQL"> </ PARAM> 
        ///  < paramの名前= "funcObj"> </ param>の
        ///  <PARAM NAME = "dicParams"> </ param>の
        ///  <リターン> </リターン> 
        公共の 静的な 無効 QueryMultipeEntity(文字列、SQL、辞書< 文字列オブジェクト > dicParams、アクション<GridReader>
        { 
            使用)(GetMySqlConnnetionします。
            もし(!dicParams = ヌル
            { 
                DynamicParameters PS = 新しいDynamicParameters();
                foreachの文字列項目dicParams.Keys)
                { 
                    ps.Add(項目、dicParams [アイテム])。
                } 
                使用VAR readRsult = conn.QueryMultiple(SQL、PS))
                { 
                    funcObj.Invoke(readRsult)。
                } 
            } 
        }

         ///  <要約>
        /// 取得のMySQL接続
         ///  </要約> 
        ///  <戻り値> </戻り> 
        プライベート 静的MySqlConnectionにGetMySqlConnnetion()
        { 
            戻り 新しい新しいMySqlConnectionに(STR)を; 
        } 

        ///  <まとめ> 
        /// 取得パラメータDapperのオブジェクト、ここで新規に直接どこでも名前空間を導入することなく、処理
         ///  </要約> 
        ///  <戻り値> </戻り値> 
        パブリック 静的のDynamicParametersのGetDynamicParameters()
        { 
            返す 新新)(DynamicParametersを; 
        } 
    } 

    ///  <要約> 
    /// 
     </概要>/// 
    パブリック クラスFEG_ConfigHelper 
    { 
        パブリック 静的の IConfigurationの_configuration { GETセット; }
         ///  <要約> 
        /// 获取连接数据库的字符串
         ///  </要約> 
        ///  <戻る> </戻り> 
        パブリック 静的 文字列GetDbConnectionStr()
        { 
            戻り _configuration.GetSection(" のconnectionStrings:ReadonlyConnection " )。値; 
        } 

        ///  <要約> 
        ///  
        ///  </要約> 
        ///  <PARAM NAME = "キー"
        ///  <戻る> </戻り> 
        パブリック 静的 文字列 GetAppSettingValueByKey(文字列キー)
        { 
            リターン_configuration.GetSection(キー).Valueの。
        } 

        ///  <要約> 
        ///  
        ///  </要約> 
        ///  <typeparam名= "T"> </ typeparam> 
        ///  <PARAM NAME = "キー"> </ PARAM> 
        ///  <リターン> </戻り> 
        パブリック 静的 T GetAppSettingEntity <T>(文字列キー)T:クラス新しい()
        {
            _configuration.GetSection(キー).ValueのようなT。
        } 
    } 
}
コードの表示

2:電話番号:

 ///  <要約> 
        /// テストDapperの、同时查询多个表的操作
         ///  </要約> 
        ///  <戻る> </戻り> 
        [HttpPost、ルート(" TestGridReader " )]
         パブリックBasisApiResult TestGridReader( )
        { 
            BasisApiResult結果 = 新しいBasisApiResult()。
            result.data = _personnelService.TestGridReader <FEG.ESB.Data.Model.personnel、FEG.ESB.Data.Model.course> ();
            戻り値の結果; 
        }
コードの表示
       公共タプル<のIEnumerable <T>、IEnumerableを<M >> TestGridReader <T、M> ()
        { 
            のIEnumerable <T>のplist = NULL ; 
            IEnumerableを <M> CLIST = nullを
            辞書 < 文字列オブジェクト > DIC = 新しい辞書< 文字列オブジェクト > (); 
            dic.Add(" isdel "" 0 " )。
            FEG_DapperHelper.QueryMultipeEntity("isdel = @ isdelリミット0,1職員から選択*;もちろんどこからisdel = @ isdelリミット0,1 *選択します。、DIC、X => 
              { 
                  PLIST = x.Read <T> ().ToList(); 
                  CLIST = x.Read <M> ().ToList(); 
              }); 
            戻りTuple.Create(PLIST、CLIST) ; 
        }
コードの表示

3:テストOKのスクリーンショット:

 

 

おすすめ

転載: www.cnblogs.com/Fengge518/p/12393294.html