問題タブ [bltoolkit]
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.
.net - BLToolkit が普及していないのはなぜですか?
.NET を対象とする軽量で高速な ORM をネットで検索しているときに、BLToolKitに出会いました。これは、パフォーマンス、オープン性、保守性、および柔軟性の点で非常に優れているようです。
ただし、コミュニティからの愛がほとんどなく、SO に関する質問が 9 つしかないことにも気付きました。誰かがこれについてもっと光を当てることができますか?
人々は、Entity Framework に恋をしたり、他の ORM を使用したりして、独自の DAL を展開しているだけですか?
database - SELECT JOIN を使用した BLToolkit 複雑なマッピング
プロジェクトで BLToolkit マッパーを使用しようとしています。解決方法が本当にわからないことがあります。問題は、コンテンツとコメントの2つのクラスがあることです。
まあ、誰もがBLToolkit.netで見た例と同じくらい単純な複雑なマッピングに見えます。しかし、私は SELECT JOIN クエリを使用しようとしています。これは私の質問です。
このクエリは正しいデータを返します ( ExecuteReader で確認)。しかし、MapResultSets には Content データのみがあり、Comment データはありません ... Content と Comment セットを交換すると ... Comment データのみが取得され、 Content データは取得されません ... 今のところ、現実についても気にしません。 、 BLToolkit に説明したいのですが、1 行に 2 つのクラスのデータがあるということです。
c# - BLToolkit: エンティティを更新しようとすると、「SQL エラーに変換できません」というメッセージが表示される
更新方法があります:
そしてエンティティ:
そして、更新コードは次のとおりです。
テーブルのエントリを更新しようとすると、「'Convert(item).Id' を SQL に変換できません。」というメッセージが表示されます。エラー。ID を更新しないようにしましたが、結果は同じでした。解決策を見つけたいのですが、できません。回答ありがとうございます。
c# - BLToolkitのクラスタイププロパティへのフィールドマッピング
私のテーブルスキーマ(抜粋)
エンティティクラス
問題?
私のクラスへのフィールドのマッピングが問題です。データテーブル(上部)から取得したフラットな結果セットから内部クラスのプロパティを直接マップしたいと思います。
MapFieldAttribute
(上のコードに見られるように)クラスレベルで設定を設定しましたが、ルールは常にnullです。問題の一部は、この内部クラスプロパティを最初にインスタンス化して割り当てる必要があることです。これは、すべてのBLToolkitの例でnull許容でない内部オブジェクトが使用されているためです。しかし、私の場合は、必要に応じてインスタンスを作成したくありませんnull
(ほとんどの場合は作成されますnull
)。
では、これはどのように行う必要がありますか?
stored-procedures - ストアドプロシージャをサポートするBLToolkit代替オブジェクトマッパー
私は直接エンティティマッパーのファンではありません。SQLクエリは、データベースに直接(正しい結合、グループ化、インデックスなどを使用して)手動で記述した場合に最も高速で最適化されると思います。
現在のプロジェクトでは、BLToolkitを試してみることにしました。Ado.netのラッパーと速度に非常に満足しているので、データベースにクエリを実行して、強い型のC#オブジェクトを取得します。また、ストアドプロシージャヘルパーを生成するT4を作成したので、ストアドプロシージャを呼び出すときにマジックストリングを使用する必要がないため、すべての呼び出しでパラメーターに厳密な型が使用されます。
基本的に、すべてのCRUD呼び出しはストアドプロシージャを介して行われます。これは、クエリの多くが単純なselectステートメントではなく、特に作成と更新でも結果が返されるため、ストアドプロシージャを使用して1回の呼び出しで簡単に実行できます。ともかく...
欠点
BLToolkitの最大の欠点(BLToolkitを評価するすべての人にこれを知ってもらいたい)は、その機能や速度ではなく、ドキュメントが非常に少ないことと、そのサポートまたは欠如です。したがって、このライブラリの最大の問題は、ライブラリを機能させるために試行錯誤を繰り返すことです。だから私もそれの多くの異なる部分を使いたくないのです。なぜなら、使うほど、自分で解決しなければならない問題が増えるからです。
質問
BLToolkitに代わるものは何ですか?
- DBテーブルと必ずしも同じではない、提供するエンティティを返すストアドプロシージャの使用をサポートする
- データリーダーからオブジェクトへの優れたオブジェクトマッパーを提供します
- 関係をサポートします(それらすべて)
- 複数の結果セットの結果に対するオプションの(ただし望ましい)サポート
- 特別な設定は必要ありません(私はデータ接続文字列のみを使用し、他には何も使用しません)
基本的には非常に軽量で、基本的には単純なAdo.netラッパーとオブジェクトマッパーが必要です。
そして最も重要な要件:使いやすく、十分にサポートされており、コミュニティがそれを使用しています。
entity-relationship - サブ関連エンティティにバックリファレンスがない1対多
Post
2つのエンティティ(つまりと)の間に1対多の関係Comment
があり、マスタークラスを次のように定義している場合:
しかし、コメントから投稿する必要がないため、私のComment
サブ関連クラスにはタイプのプロパティがありません。Post
コメントは常にマスター投稿インスタンスとともに表示されます。
次に、2つの結果セットを返すストアドプロシージャがあります。それらに関連する投稿とコメントです。私は自分MapResultSet
を
しかし、これは機能しません。これは、Comment
その参照がPost
ないため、上位コードの2番目のパラメーターに対して定義するものがないためです。メソッドパラメータが無効な場合に提供するstring.Empty
か、例外が発生した場合。null
Post
プロパティを追加せずに、これら2つのエンティティ間の関係をどのように定義する必要がありますComment
か?
c# - Linq を使用した BLToolkit -- なぜ「using」ステートメントが必要なのですか?
SubSonic 3 の最近の (極端な) パフォーマンスの問題に照らして、ORM の移行を検討しており、できればできるだけ少ないコード (主に Linq) を書き換えます。
だから私はBLToolkitを見ています。SubSonic と BLToolkit の主な違いの 1 つは、BLToolkit には常にusing
ステートメントが必要だということです。例えば:
これは正確に何をしますか?データベースの新しいインスタンスを作成すると、新しい接続が作成されますか? これを静的クラスに「ラップ」して、どこからでも実行できるようにすることは合理的でしょうvar q=from e in Database.Employee ...
か? これは、Web アプリケーションのコンテキストにどのような影響を与えるでしょうか?
linq - BLToolkit と Linq を使用したスカラー関数
BLToolkit ライブラリを使用して SQL プロシージャを Linq に変換中です。
今、私は小さな問題で立ち往生しているので、誰かがこれが可能であることを知っていれば、本当に助けていただければ幸いです.
とにかく、私はこのようなSQLクエリを持っています(注:これは私の実際のテーブル名ではありません。何が起こっているのか理解できるように翻訳しただけです)
当日のすべての製品の税金を取得する必要があることを除けば、ここではそれほど派手なことはありません。
これをLinqに変換する必要がありますが、これが可能かどうかはわかりません。私はこのようなことを試しました
そしてそれはうまくいきません。GetWork関数は、本質的に税金を返す別の linq クエリです。BLToolkit ライブラリを使用してスカラー関数を呼び出す方法がわかりません。
質問はこれです。Linqの選択されたステートメントからスカラー関数を呼び出すことは可能ですか?
linq - BLToolkitのテーブル値関数
BLToolkitライブラリを使用してSQLServerのテーブル値関数を使用することはできますか?
Linqクエリ内で使用したいのですが、ライブラリwikiでこれに関するものが見つかりませんでした。
sql - 結合による BLToolkit の更新
2 つのテーブルを結合し、そのうちの 1 つを更新する必要がある BLToolkit 構文を使用して、次の更新コードを作成する方法を知っている人なら誰でも知っています。SQL Server では、これは次のように行われます。
これが私がこれまで更新を行ってきた方法です。