パブリック クラス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を); } }