問題タブ [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.
c# - SQL Server で使用する場合に dapper.net キャッシュを定期的にフラッシュする方法
誰かがこれが何を意味するのか説明してもらえますか (Dapper.net Web サイトから)
制限事項と注意事項
Dapper は、実行するすべてのクエリに関する情報をキャッシュします。これにより、オブジェクトをすばやく具体化し、パラメーターをすばやく処理できます。現在の実装では、この情報を ConcurrentDictionary オブジェクトにキャッシュします。格納されているオブジェクトがフラッシュされることはありません。パラメータを使用せずにオンザフライで SQL 文字列を生成している場合、メモリの問題が発生する可能性があります。辞書を LRU キャッシュに変換する場合があります。
太字の行が何を意味するのか理解できません。SQL Server と c# クライアントを使用しています。
このメモリの問題を引き起こす C# コードのサンプルを教えてください。ありがとうございました
select - dapper を使用して 1 対多の関係と 1 対 1 を一緒に選択する方法
次のクラスと db スキーマがあります。完全なオブジェクトグラフを水和するdapperを使用して、データベースからこのデータをクエリしようとしています。さまざまなSOの質問とテストを見ましたが、これを行う方法が本当にわかりませんでした。
DB スキーマ
クラス
.net - ネストされたマルチマッピングのDapper構文
これが、データベースからデータを取り込むストアドプロシージャです。
以下のdapperクエリを書き込もうとしましたが、例外が発生しました
以下の概念を使用しようとしましたが、単一のオブジェクトのみが返されます。人のリストが必要です。
前もって感謝します。
transactionscope - Dapper&TransactionScope?
Dapperで遊んでみました。これまでのところ、私はそれが大好きです。dapperは動作しTransactionScope
ませんか?TransactionScope.Complete
電話をかけなかったとしても、変更はデータベースにコミットされていることに気づきました。TransactionScopeが現在サポートされていない場合、将来的にサポートする予定はありますか?そうでない場合は、従来のトランザクション管理(System.Transactions.Transaction)を使用する必要がありますか?
更新:TwitterでSamと話しました。動作するはずです。明日の朝(仕事中)に詳細を更新して、completeと呼ばなかった場合でも、変更がまだdbにコミットされている理由を誰かが理解できるかどうかを確認します。
datareader - Dapper 処理で空の結果セットが返されました
Dapper を使用して SQL データをマッピングしていますが、これまでのところ非常にうまく機能しています。ただし、次のようなことをしている場合があります。
これは、呼び出しているストアド プロシージャがデータを返す限りうまく機能します。ストアド プロシージャが結果を返さず、out パラメータでエラーを返す場合があります。dapper がエラーをスローするため、これは Dapper で問題を引き起こすようです。
「マルチマッピング API を使用する場合、Id 以外のキーがある場合は、splitOn パラメータを設定してください」
空の結果が返された場合に適切に処理できるようにクエリを記述する方法はありますか、それとも Dapper の制限ですか?
sql-server - 多くの1対多のマッピングを使用して、クエリのパフォーマンスを向上させます
SQLAzureにEntityFrameworkを使用しており、アプリケーションの1ページに、かなりの量の関連データをユーザーに表示しています。ページに最大30個のアイテムを読み込んでいますが、各アイテムには、他のオブジェクトへの5つの1対多のマッピングがあります。クエリ時間は妥当なレベルですが、オブジェクトマッピングでかなりのパフォーマンスがリークしています。(ほぼ1秒)。
これが私のオブジェクトがどのように見えるかの例です
タスクには、名前、ステータス、および期日があります。また、カスタムの名前と値のペアである多くのTaskData 、タスクの履歴を示す多くのトランザクション、多くのファイル、多くのコメント、およびそれに取り組んでいる多くの人々がいます。
私のEFクエリは次のようになります。
特定のタスクの関連性は、最初にステータスに基づいており、次に期日に基づいています。そこで、sortで使用するIComparableオーバーライドを作成しました。重要なのは、ソートがintまたはdateに基づいていないため、このシナリオではページングされたクエリがうまく機能しないということです(私は正しいですか?)
アプリケーションの残りの部分では、各タスクに関する情報をあまり表示せず、Linq2Entitiesは正常に機能しています。ただし、この場合のオブジェクトマッピングは私たちを殺しています。私はDapperを使用してDBに直接アクセスする道を進んできましたが、1対多のマッピングには注意が必要です。いくつかの関係については、うまくいくと思いますが、5-6ではうまくいきません。次に見るのはPetaPocoでしたが、最初にここに質問を投げたほうがいいと思うまで、それほど遠くはありませんでした。
大量のデータを取り戻そうとすることに夢中ですか?これから最大のパフォーマンスを得るための私のオプションは何ですか?アプリケーションの1つの領域しかないため、少し複雑にします。
asp.net - Dapper.net トランザクションの問題
Sql Server 2008 データベースにトランザクションをコミットしようとしています。最初に 2 つの挿入に続いて 2 つの更新が行われますが、最初の更新を実行しようとするとすぐに、次のエラーが発生します。
ExecuteNonQuery では、コマンドに割り当てられた接続が保留中のローカル トランザクションにある場合、コマンドにトランザクションが必要です。コマンドのトランザクション プロパティが初期化されていません。
簡潔にするために少し編集したコードを次に示します。
最初の 2 つの挿入は正常に機能しますが、更新の 1 つを実行しようとするとすぐに喜びがありません。
c# - 推奨されるasp.netMVCモデル設計アプローチ
モデルの設計に関しては、これから始めようとしている新しいプロジェクトに最適なアプローチを決定しようとしています(そして、Dapper.netを使用しています)。
モデルに外部キープロパティではなくオブジェクトを使用するというアイデアが好きです。
vs
ただし、この種のクリーンなアプローチを実装する場合は、すべてのオブジェクトにマルチマッピングする必要があります(これにより、オブジェクト内のオブジェクトの循環参照が発生する可能性があります(または、特定のポイントでマルチマッピングを停止する必要があるため、最終的にはオブジェクトツリーのある時点でNULLオブジェクト)。また、ある程度マルチマップを実行すると、必ずしも必要になるとは限らないときに、不要な作業を引き起こしたり、結合を実行したりする可能性があります。
または、マルチマッピングを使用して「必要に応じて」オブジェクト内にオブジェクトを設定することにした場合(一部のリポジトリメソッドでは、必要に応じてマルチマッピングを実行します。他のリポジトリメソッドでは、オブジェクトをわざわざ入力しないでください。 )、オブジェクト(オブジェクト内)がnullかどうかを常に確認できるとは限らないという点で、ちょっと汚い感じがします。
私は過去にNHibernate(または少なくともそのより基本的な機能の一部)を使用しましたが、モデル内に常にオブジェクトがあり、必要な場合は遅延読み込みに依存して取得できるため、ジレンマはありませんでした-しかし、Dapper.netで遅延読み込みがないので、最善のアプローチが本当にわかりませんか?
c# - Dapper は SQL 2008 テーブル値パラメーター 2 をサポートしていますか?
dapper が TVF をサポートできることは知っていますが、TVF と共に追加のパラメーターを (IntDynamicParam クラスに追加せずに) どのように送信しますか? 以下の Tests.cs の例を参照してください。追加のパラメーターを追加するように変更しました。
次のことを試しましたが、エラーが発生しました (オブジェクト型 SqlMapper.Tests+IntDynamicParam から既知のマネージド プロバイダー ネイティブ型へのマッピングは存在しません)。
サムさん、返信ありがとうございます。質問が少し違いました。タプルと一緒に別の変数を渡す方法を知りたいです。以下の変更された SP を参照してください。
ms-access - Dapper と System.Data.OleDb DbType.Date が「OleDbException : 条件式のデータ型の不一致」をスローする
これに関して問題を提起する必要があるかどうかわからないので、最初にこれに対する簡単な回避策を誰かが知っているかどうか尋ねようと思いました. MS Access 2003 (Jet.4.0) と組み合わせて使用する場合、OleDbConnection で Dapper を使用しようとするとエラーが発生します (データベースの選択ではありません!)
以下のテスト コードを実行すると、「OleDbException : 基準式のデータ型が一致しません」という例外が発生します。
OleDb の日付に関する過去の経験から、DbType を Date に設定すると、内部で OleDbType プロパティの値が OleDbType.Date ではなく OleDbTimeStamp に変更されると思います。これは Dapper のせいではないことは理解していますが、OleDbParameter クラスで内部的にリンクする奇妙な方法と見なされる可能性があるのは
他の ORM、未加工の ADO、または独自のファクトリ オブジェクトを使用してこれに対処する場合、コマンドを実行する直前にコマンド オブジェクトをクリーンアップし、OleDbType を Date に変更します。
コマンドオブジェクトが内部にあるように見えるため、私が見る限り、これはDapperでは不可能です。残念ながら、私は動的生成のことを学ぶ時間がなかったので、簡単なことを見落としていたり、単に問題を提起するのではなく、修正を提案して貢献したりする可能性があります。
何かご意見は?
リー