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のスクリーンショット: