問題タブ [dapper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2220 参照

mvc-mini-profiler - MVCMiniProfiler を使用した Dapper

Dapper で MVCMiniProfiler を使用したいと考えています。これは、dapper からの「Query」呼び出しを「Using Profiler.Step」ブロックでラップする以外に可能ですか?

私はこの基本的な Dapper 呼び出しを持っています:

MiniProfiler の例はこれを示しています

私が立ち往生しているのは、ProfiledDbConnection での「Get」の実装です。Dapperの使用中にProfiledDbConnectionを使用することは可能ですか?

0 投票する
1 に答える
309 参照

c# - Dapperのパフォーマンス結果は私のマシンで非常に似ているようです

dapperソースコードに付属のパフォーマンステストを実行しました:http ://code.google.com/p/dapper-dot-net/

ほとんどの場合、さまざまなデータアクセス方法間のパフォーマンスは非常に似ていて、私の結果は1200msから1500msの範囲でした。

結果がどの種類のサーバーで実行されたかはわかりませんが、それらのWebページには50ミリ秒の範囲の結果が表示されます。

私はこれを12GBのRAMを搭載したi7デスクトップで実行しましたが、何かすべきことはありましたか?SQLサーバーのtempdbに対してすべてを実行しているようです。

0 投票する
4 に答える
21472 参照

c# - カーソルを返す Oracle ストアド プロシージャで Dapper を使用する

カーソルを返す Oracle ストアド プロシージャでDapperを使用するにはどうすればよいでしょうか。

ここで、DbType は、Cursor メンバーを持たない System.Data.DbType です。DbType.Object を使用してみましたが、OracleClient と OracleDataAcess の両方では機能しません。

代わりに OracleType または OracleDbType を使用する方法は何でしょうか?

0 投票する
1 に答える
3843 参照

mysql - MySQLから返されたブール値を設定しようとすると、Dapperが無効なキャスト例外をスローします

私はこのクラスを持っています

そして、dapperを使用してこのSQLを入力しています。

これを実行すると、次のエラーが発生します。

列2の解析エラー(IsValidated = 1-Int64)

私はdapperコードをステップスルーしましたが、sqldatareaderはその列がであると言っているint64ので、.NETMysqlコネクタは「TRUE」(MYSQLではtinyintである必要があります)がであると考えているようint64です。

INTのすべてのバージョン(INT、BIGINT、TINYINT、SMALLINT、MEDIUMINT)について、.NETコネクタがint64を返すというこのバグレポートを見つけました。ただし、これはMySQL 5.0のバグであり、修正されました。5.5を使用しています。私はmysql.dataバージョン6.4.3.0を持っています

IsValidated列がと宣言された一時テーブルにすべてを選択することでこの問題を「解決」しましたBOOLが、これはお粗末な解決策です。

0 投票する
1 に答える
2647 参照

c# - ネストされたマルチマッピング Dapper ページネーション クエリでの重複フィールド名の問題

ページネーションクエリのために、Dapper を使用してマルチマッピングを実行しようとすると、問題が発生しました。

このページネーション シナリオではネストされたクエリを使用しているため、ネストされたクエリ内に複数のテーブルがあり、それらを結合してマルチマップ データを取得する必要がありますが、これらのテーブルの一部は同じ名前のフィールドを共有しています。以下のクエリの例 (例: iddisplaynameおよびemail):

id上記の例では、ネストされたクエリ内で、フィールド(テーブル結合とテーブル結合のposts両方に表示される)と(両方のテーブル結合に表示される)フィールドに問題があることがわかります。userstopicsdisplaynameemailusers

これまでに考えた唯一の回避策は、これらの「問題のある」フィールドのそれぞれを別の名前にキャストすることですが、これには、影響を受けるモデルにダミー プロパティを作成するという非常に面倒なプロセスが必要になるため、マルチマッピングがこれらにマッピングされ、実際の値が設定されていない場合は、モデルの「実際の」プロパティも値のダミー プロパティをチェックします。

また、上記のシナリオでは、x 個のダミー プロパティを作成する必要があります。ここで、x は、クエリ内の同じテーブルで使用できる結合の数です (この例では、同じ Users テーブルで 2 つの結合があるため、一意の名前のダミーが 2 つ必要です)。プロパティは Dapper マッピングのみを目的としています)。

これは明らかに理想的ではなく、これらの複数マッピングのページ付けクエリをさらに作成するにつれて、問題が発生し、乱雑さが増していると確信しています。

この問題に対するすてきでクリーンな解決策があることを願っていますか?

0 投票する
3 に答える
13623 参照

c# - 変数/動的なフィールド セットを使用して C# で匿名型を宣言することは可能ですか?

C# では、実行時までフィールドが不明な匿名型を宣言できるかどうかを調べたいと思います。

たとえば、キーと値のペアのリストがある場合、そのリストの内容に基づいて匿名型を宣言できますか? 私が取り組んでいる特定のケースは、パラメーターを Dapper に渡すことです。この場合、事前にパラメーターの数がわかりません。

この List (または同等の Map) を、クエリ パラメータとして Dapper に渡すことができる匿名型に変換したいと考えています。したがって、理想的には、匿名型として定義されている場合、上記のリストは次のようになります。

StackOverflow で、宣言された後に匿名型を拡張すること (「extendo オブジェクト」)、またはオブジェクトの作成後に任意のフィールドを宣言することについて尋ねる質問をいくつか見てきましたが、それを行う必要はありません...必要なだけです型を事前に動的に宣言します。私の疑いでは、それが可能であるとしても、それにはいくらかの凝った反省が必要になるだろう.

私の理解では、コンパイラはコンパイル時にボンネットの下で匿名クラスの型を定義するため、そのクラスのフィールドが実行時まで利用できない場合、運が悪い可能性があります。私の使用例は、「拡張オブジェクト」を使用して任意のフィールドをいつでも定義することと実際には変わらないかもしれません。

または、(匿名クラスを宣言するのではなく) クエリ パラメーターを Dapper に渡すためのより良い方法を誰かが知っている場合は、それについても聞きたいです。

ありがとう!

アップデート

こちらからの連絡が遅くなり申し訳ありません!これらの回答はすべて素晴らしいものでした。皆さんにポイントを与えたいと思います。jbtule のソリューション (Sam Saffron による編集) を使用して IDynamicParameters を Dapper に渡すことになったので、彼に答えを与える必要があると感じました。他の回答も素晴らしく、私が尋ねた具体的な質問に答えてくれました。みんなの時間を本当にありがとう!

0 投票する
2 に答える
3366 参照

c# - Dapper マイクロ ORM、データベースに依存しない、MySql Guid タイプ

私はペット プロジェクトでDapperを実験しています。SQLiteを使用してすべてのテストを実行し、MySql を「本番」用に使用しています。ただし、データベースに依存しない状況を処理するために Dapper を最適に使用する方法がわかりません。

私が抱えている特定の問題は、主キーのGuid タイプをサポートしていないMySql にあるため、タイプとしてvarchar(40)を使用しています (SQLite は GUID である一意の識別子をサポートしています)。したがって、以下のような一般的なリポジトリがある場合、MySql データベースから選択しようとすると問題が発生します。Id プロパティの型は Guid であり、varchar 型が guid 型と一致しないため、Dapper は「 Error parsing column 10 」をスローします。

Id プロパティを guid から int に変更すると、GetById 内の生の SQL はさらにトリッキーになり、どのように記述すればよいかわかりません。1.トランザクションの開始、2.挿入、3.最後に挿入されたIDを選択して返す、のようなものになります。データベースの種類が mysql の場合はlast_insert_idを使用しますか、それとも sqlite の場合はlast_insert_rowidを使用しますか? 生のSQL構文はデータベースごとにかなり異なるため...

他の例として、返される行数を制限する (特にページングの場合) などがあります。では、データベースにとらわれない未加工の SQL クエリを dapper で作成するにはどうすればよいでしょうか。おそらく私の状況ではDapperは適していませんか?おそらく、ここでは同じ古い NHibernate を使用する必要があります。助言がありますか?私はそれを間違っていますか?ありがとう!

0 投票する
7 に答える
99753 参照

c# - Dapper でのマルチマッピングの正しい使い方

Dapper のマルチマッピング機能を使用して、ProductItems と関連する Customers のリストを返そうとしています。

私のダッパーコード:

これは正常に機能しますが、すべての顧客のプロパティを返すには、完全な列リストを「splitOn」パラメーターに追加する必要があるようです。「CustomerName」を追加しないと、null が返されます。マルチマッピング機能のコア機能を誤解していますか? 毎回列名の完全なリストを追加する必要はありません。

0 投票する
8 に答える
116794 参照

orm - ネストされたオブジェクトのリストをDapperでマップするにはどうすればよいですか

現在、dbアクセスにEntity Frameworkを使用していますが、Dapperを確認したいと思います。私はこのようなクラスを持っています:

したがって、1つのコースを複数の場所で教えることができます。Entity Frameworkがマッピングを行うので、Courseオブジェクトに場所のリストが表示されます。Dapperでこれをどのように処理しますか?それは可能ですか、それともいくつかのクエリステップで実行する必要がありますか?

0 投票する
1 に答える
6561 参照

sql - Dapper を使用した SQL ステートメントのパラメーター化された LIKE 句

Dapper を使用して次のクエリを実行したいのですが、現在期待される結果が返されません (@pName パラメータを一重引用符内のリテラル テキストとして処理する必要があると思いますか?)。

@pName は、クエリの実行時に値を割り当てるパラメーターです。

次のようにSQLを構築するだけでうまくいきます。

..しかし、可能であればparamを使用したいと思います。

次のコードを使用してクエリを実行しています。

Dapper を使用してこれを実現するにはどうすればよいですか?