問題タブ [linq-to-nhibernate]
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.
nhibernate - LinqからNHibernateへ-特定の子オブジェクトのみが含まれる親オブジェクトを返す方法
次のような単純化されたモデルがあるとします。
問い合わせがいくつかの基準を満たしている場合に、送信者とその問い合わせのリストを返すように、LinqtoNhibernateクエリをどのように構築できますか。私はこのようなことを試しました:
この場合、タイプSenderをタイプEnquiryにキャストできないというInvalidCastExceptionが発生します。
HQLを使用せずにこれを行う方法についての指針はありますか?
.net - リポジトリの有無にかかわらず NHibernate
この問題については、同様の質問がいくつかあります。どちらに進むかを決定する十分な理由がまだ見つからないためです。
本当の問題は、Repository パターンを使用して NHibernate を抽象化するのが合理的かどうかです。
抽象化の背後にある唯一の理由は、必要に応じて NHibernate を別の ORM に置き換えるオプションを自分自身に残すためのようです。しかし、リポジトリを作成してクエリを抽象化することは、さらに別のレイヤーを追加し、配管の多くを手作業で行うように思えます。
1 つのオプションはIQueryable<T>
、ビジネス レイヤーに公開して LINQ を使用することですが、私の経験では、LINQ サポートはまだ NHibernate に完全には実装されていません (クエリは常に期待どおりに機能するとは限らず、フレームワークのデバッグに時間を費やすのは嫌いです)。
ビジネス層で NHibernate を参照すると目が痛いですが、それ自体がデータ アクセスの抽象化のはずですよね?
これについてどう思いますか?
c# - Queryable.Where述語を使用してLinqからNHibernateに
LINQtoNHibernateを使用してSQLiteデータベースにクエリを実行しています。
Person
IDと名前を含むエンティティです:
私のdbテーブルに「John」という名前の人が1人含まれているとします。
このテストは期待どおりに機能します。
しかし、これは失敗します:
私は何が欠けていますか?
c# - Linq-To-NHibernate を使用した多対多クエリ
わかりましたみんな(そしてギャル)、これは一晩中私を狂わせていました、そして私はあなたの集合的な知恵に助けを求めています.
データ アクセス ストーリーとして Fluent Nhibernate と Linq-To-NHibernate を使用しており、次の単純化された DB 構造があります。
簡潔にするために外部キーは省略しましたが、基本的には次のようになります。
- クラスは多くのセクションを持つことができます。
- セクションは 1 つのクラスのみに属することができますが、多くの生徒を持つことができます。
- 学生 (aspnet_Users) は、多くのセクションに所属できます。
対応する Model クラスと Fluent NHibernate Mapping クラスをセットアップしましたが、すべて正常に動作しています。
ここで私は立ち往生しています。学生の UserId とクラスの日付に基づいて、学生が登録されているセクションを返すクエリを作成する必要があります。
これが私がこれまでに試したことです:
1.
2.
明らかに、開始日と終了日の間に現在の日付のクラスの userId に一致する学生がいない場合、上記の 2 は惨めに失敗します...しかし、試してみたかっただけです。
Class StartDate と EndDate のフィルターは正常に機能しますが、Students との多対多の関係は難しいことがわかっています。クエリを実行しようとするたびに、次のメッセージとともに ArgumentNullException が発生します。
値を null にすることはできません。パラメータ名:セッション
私は多対多ではなく、Section への参照と Student への参照を使用して、SectionStudents リレーションを Model クラスにする道をたどることを検討しました。できればそれを避けたいのですが、そのように機能するかどうかさえわかりません。
助けていただける方、よろしくお願いします。
ライアン
fluent-nhibernate - NHibernateクエリロジックをどこに配置しますか?
FluentNHibernateとLinqtoNHibernateを使用して適切なドメインアーキテクチャをセットアップしようとしています。コントローラーがリポジトリクラスを呼び出しています。リポジトリクラスは、内部でNHibernateに感謝し、データのICollectionを返します。これは、データアクセスを抽象化し、NHibernate機能を「ファインプリント」で維持するため、うまく機能しているようです。
ただし、現在、コントローラーが異なるコンテキストで同じデータ呼び出しを使用する必要がある状況を見つけています。たとえば、私のリポジトリはユーザーのリストを返します。これは、ユーザーのリストを表示したい場合には便利ですが、子クラスを利用して役割などを表示したい場合は、SELECT N+1の問題が発生します。NHibernateでそれを変更して、代わりに結合を使用する方法を知っていますが、私の具体的な質問は、このロジックをどこに置くかです。すべてのGetAllUsers()呼び出しでロールを返す必要はありませんが、一部のロールを返す必要があります。
だからここに私が見る私の3つのオプションがあります:
- マッピングの設定を変更して、ロールがクエリに結合されるようにします。
- GetAllUsers()とGetUsersAndRoles()の2つのリポジトリ呼び出しを作成します。
- IQueryableオブジェクトをリポジトリからコントローラーに返し、NHibernateExpandメソッドを使用します。
これをうまく説明できなかったらごめんなさい。私はちょうどDDDに飛び込んでいますが、この用語の多くはまだ私にとって新しいものです。ありがとう!
linq-to-nhibernate - 新しいNHibernateCoreLinqはどこにありますか?
NHibernate 2.1.2.4000を実行していますが、セッションからQuery()メソッドがありません...
NHibernateのどのバージョンがlinqをコアに導入しますか?
私はまだ古いContribLinqで実行しています。
Sharp Architectureの最新の安定したリリースにアップグレードしたところ、依存関係の悪夢のためにトランクから個々のコンポーネント(NHibernateなど)をアップグレードすることが困難になっています。
performance - NHibernate基準クエリとLINQからNHibernate
LINQ to NHibernateで表現できないクエリがあり、NHibernateCriteriaを使用できることを理解しています。しかし、パフォーマンスに関しては、NHibernateCriteriaを使用する方がLINQto NHibernateよりも一般的に優れていると想定しても安全ですか?
c# - Hibernate の結合と射影のプロパティ
私は単純な状況(画像リンクテキストのようなもの)と単純なSQLクエリを持っています
CriteriaAPI を使用して nHibernate で同じ効果を得る方法は?
私はこのようなものを持っています:
マッピング:
私は欲しい :
- データをグリッド コントロールに取得する
- - ファーストネーム、
- - 苗字、
- - ニップ、
- - 職位記述書、
- - 教育.説明、
- - JobType.Description、
- - Country.Description - Address.Official が true の住所から、
- - Street - Address.Official が true の住所から、
- - HouseNo - Address.Official が true の住所から、
- - FlatNo - Address.Official が true であるアドレスから。
- データを別のグリッド コントロールに取得する
- - ファーストネーム、
- - 苗字、
- - ニップ、
- - 職位記述書、
- - 教育.説明、
- - JobType.Description。
そして最も重要な考え方。SELECT ステートメントを 1 つだけ使用してこれを実行したいと考えています。ここでポイント 1 として NamedSQLQuery を使用し、すべてが適切に機能していますが、最も単純な状況では CriteriaAPI を使用したいと考えています。
また、ポイント1と2については、DTOクラスがあり、クエリの結果をこのクラスに変換します。
GetAllEmployees() でこれを行うことができますが、多くのプロパティが遅延読み込みされており、アプリケーションとデータベースの間に膨大なトラフィックがあります。これらのプロパティを Eager Loading に変更することはできますが、取得する必要のないデータが多すぎると思います。
linq - LinqからNHibernateへ、Rand()による注文?
私はLinqToNhibernateを使用しており、HQLステートメントを使用して次のようなことができます。
Andi tは非常にランダムに順序付けられます。リンクして、Linq to Nhibernateで同じステートメントを実行するにはどうすればよいですか?
私はこれを試してみます:
しかし、それは例外をスローし、機能しません...
他の方法や解決策はありますか?
ありがとう
乾杯
c# - Fluent NHibernate:別の名前の列のマッピング
私がテーブルを持っているとしましょう:
ProjectManagerIdとContactIdは、どちらもPersonという名前のテーブルのIDです。
これらの2つの列をマップして、人物オブジェクトを作成するにはどうすればよいですか?(自動マッピングまたはFluentの法線マッピングのいずれかを使用)。
ありがとう