勇敢なヘルパー

 

 

パブリック クラスDapperHelper 
    { 
        /// データベース接続名
        プライベート 静的な 文字列 _connection = 文字列.Empty; 

        /// 接続名を取得         
        プライベート 静的な 文字列接続を
        { 
            GET { 戻る}; _connectionを
             // }; SET = {_connection値
        } 

        /// 戻り接続の例         
        プライベート 静的のIDbConnectionのDBConnection = NULL ; 

        /// 静的クラスのインスタンス変数記憶         
        プライベート 静的DapperHelper uniqueInstance。

        /// 同期を保証するために、スレッド識別子を定義         
        プライベート 静的 読み取り専用 オブジェクトロッカー= 新しい新しい オブジェクト();
         ///  <要約> 
        /// クラスのインスタンスを作成し、プライベートコンストラクタは、シングルモードの実施形態を実現するために、外部することができない
         ///  </要約> 
        プライベートDapperHelper()
        { 
            // 直接サンプルプロジェクトは、設定ファイル内の文字列を接続し、次に読み取ることができる、実証書き込む便宜上ストリング。
            = _connectionの@ " サーバー; UID = SA =; PWD = sasasa;データベース= Dapperの" ; 
        } 

        ///  <要約> 
        ///は、一つだけのインスタンスが存在することを保証するために、例えば、単一モードの実施形態を、取得
         ///  </要約> 
        ///  <> </戻り値を返します>
        パブリック 静的でGetInstance()DapperHelper 
        { 
            // 主にロックを低減するダブルロックシングルモードの実施形態に加え、外気中の決意条件、ロック解除不要損失
            IF(uniqueInstance == NULL 
            { 
                ロック(ロッカー)
                { 
                    IF(uniqueInstance == NULL 
                    { 
                        uniqueInstanceは = 新しい新しいDapperHelper(); 
                    } 
                } 
            } 
            戻りuniqueInstanceを; 
        } 


        ///  <まとめ> 
        /// リンクデータベース接続オブジェクトを作成し、オープンする
         /// </要約> 
        ///  <戻る> </戻り> 
        パブリック 静的のIDbConnection OpenCurrentDbConnection()
        { 
            場合(のDBConnection == NULL 
            { 
                のDBConnection = 新しいSqlConnectionオブジェクト(接続)。
            } 
            // 判断连接状态
            場合(dbConnection.State == ConnectionState.Closed)
            { 
                dbConnection.Open()。
            } 
            戻りのDBConnectionします。
        } 
    }

DbContext

パブリック 静的 クラスDbContext 
    { 
        // オープンデータベース接続を取得する
        プライベート 静的のIDbConnection Dbの
        { 
            GET 
            { 
                // 単一インスタンス作成
                DapperHelper.GetInstance();
                 戻りDapperHelper.OpenCurrentDbConnection(); 
            } 
        } 

        ///  <要約> 
        /// 単離されましたエンティティレコード
         ///  </要約> 
        ///  <typeParam名= "T"> </ typeParam> 
        ///  <PARAM NAME = "SQL"> </ param>の
        ///  <戻り値> </戻り値> 
        公共の 静的QueryFirstOrDefault T <T>(文字列の SQL、オブジェクト PARAM = NULL 
        { 
            戻り Db.QueryFirstOrDefault <T> (SQL、PARAM); 
        } 

        パブリック 静的タスク<T> QueryFirstOrDefaultAsync <T>(文字列の SQL、オブジェクト PARAM = NULL 
        { 
            リターン Db.QueryFirstOrDefaultAsync <T> (SQL、PARAM); 
        } 
        ///  <まとめ> 
        /// 複数のレコードのエンティティの単離されたジェネリックコレクション
         ///  </要約> 
        ///  <typeParam名= "T"> 一般的なT </ typeParam>
        /// <戻り> </戻り> 
        パブリック 静的のIEnumerable <T>クエリー<T>(文字列のSQL、オブジェクト PARAM = ヌル、IDbTransactionトランザクション= ヌルBOOL =緩衝INT?COMMANDTIMEOUT = ヌル、CommandTypeを?CommandTypeを= NULL 
        { 
            リターン Db.Query <T> (SQL、PARAM、トランザクション、バッファリング、COMMANDTIMEOUT、CommandTypeを)。
        } 

        パブリック 静的タスク<のIEnumerable <T >> QueryAsync <T>(文字列のSQL、オブジェクト PARAM = NULL、IDbTransactionトランザクション= nullでint型COMMANDTIMEOUT = nullで、CommandTypeを?CommandTypeを= NULL 
        { 
            戻り Db.QueryAsync <T> (SQL、PARAM、トランザクション、COMMANDTIMEOUT、CommandTypeを)。
        } 

        パブリック 静的 intは実行(文字列のSQL、オブジェクト PARAM = ヌル、IDbTransactionトランザクション= ヌルINT?COMMANDTIMEOUT = ヌル、CommandTypeを?CommandTypeを= NULL 
        { 
            リターンDb.Execute(SQL、PARAM、トランザクション、COMMANDTIMEOUT、CommandTypeを); 
        } 

        パブリック 静的タスク< INT > ExecuteAsync(文字列のSQL、オブジェクト PARAM = ヌル、IDbTransactionトランザクション= ヌルINT?COMMANDTIMEOUT = ヌル、CommandTypeを?CommandTypeを= NULL 
        { 
            戻りDb.ExecuteAsync(SQL、PARAM、トランザクション、COMMANDTIMEOUT、CommandTypeを) ; 
        } 

        パブリック 静的 Tは、ExecuteScalar <T>(文字列のSQL、オブジェクト PARAM = NULL、IDbTransactionトランザクション= nullでint型COMMANDTIMEOUT = nullで、CommandTypeを?CommandTypeを= NULL 
        { 
            戻り Db.ExecuteScalar <T> (SQL、PARAM、トランザクション、COMMANDTIMEOUT、CommandTypeを)。
        } 

        パブリック 静的タスク<T> ExecuteScalarAsync <T>(文字列のSQL、オブジェクト PARAM = ヌル、IDbTransactionトランザクション= ヌルINT?COMMANDTIMEOUT = ヌル、CommandTypeを?CommandTypeを= NULL 
        { 
            戻り Db.ExecuteScalarAsyncを<T>(SQL、PARAM、トランザクション、COMMANDTIMEOUT、CommandTypeを)。
        } 

        ///  <要約> 
        /// 同时查询多张表数据(高级查询)
         /// "K_City SELECT * FROM; K_Area SELECT * FROM"。
        ///  </要約> 
        ///  <PARAM NAME = "SQL"> </ param>の
        ///  <返します> </リターン> 
        パブリック 静的 SqlMapper.GridReader QueryMultiple(文字列、SQL、オブジェクトのparam = nullを、IDbTransaction取引= ヌルint型?COMMANDTIMEOUT = nullで、CommandTypeを?CommandTypeを= nullの
        { 
            リターンDb.QueryMultiple(SQL、PARAM、トランザクション、COMMANDTIMEOUT、CommandTypeを); 
        } 
        パブリック 静的タスク<SqlMapper.GridReader> QueryMultipleAsync(文字列のSQL、オブジェクト PARAM = ヌル、IDbTransactionトランザクション= ヌルINT?COMMANDTIMEOUT = ヌル、CommandTypeを?CommandTypeを= NULL 
        { 
            戻り、SQL、PARAM、トランザクション、COMMANDTIMEOUT(Db.QueryMultipleAsyncをCommandTypeを); 
        } 
    }

 

おすすめ

転載: www.cnblogs.com/siyunianhua/p/11493504.html