問題タブ [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.

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

linq - Linq から NHibernate への複数の OrderBy 呼び出し

Linq から NHibernate へのクエリで、複数のフィールドによる順序付けに問題があります。何が間違っているのか、または回避策があるかどうかを知っている人はいますか?

コード:

ThenBy を複数の OrderBy 呼び出しに置き換えてみました。同じ結果です。このメソッドは、2 つの ThenBy 呼び出しをコメント アウトするとうまく機能します。

表示されるエラー:

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

c# - Bidi アソシエーションと NHibernate マッピング

双方向の親子関係で親と子をリンクするクラス BidiParent と BidiChildList があります。子の親がサービス層などによって更新されると、変更を反映するために、古い親と新しい親の子リストが自動的に更新されます。同様に、新しい子を追加するなどして親の子リストが更新されると、古い親の子リストと同様に、子の親が自動的に変更されます。「スマートな」ドメイン モデルの構築を試みたいと考えています。

最初の質問は、明らかに、次のとおりです。これは良い考えですか?

2 番目の質問は、フィールド_Childrenまたは _Parentにアクセスして変更するように NHibernate に指示することはできますか? NHibernate は内部フィールドを読み込んで保存する必要がありますが、HQL または LINQ クエリはパブリック プロパティを使用する必要がありますか?

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

nhibernate - NHibernateを使用してテーブル内のすべての行を削除する最良の方法は?

統合テストを独立した状態に保つために、古いデータをすべて削除し、各テストの前に新しいテスト データを挿入します。すべてのエンティティを単純にクエリして 1 つずつ削除するよりも、これを行うためのより良い方法はありますか?

「delete from tablename ;」を実行するストアド プロシージャを作成することを検討しました。クリアするテーブルごとに。これはかなり高速になるはずですが、SQL クエリを実行したり、NH を介して SP を呼び出したりせずに実行できると便利です。

私はバニラNHibernateとLinq to NHibernateを使用しています。Castle Active Record には Foo.DeleteAll() のようなものがあると思いますが、このプロジェクトでは Active Record を使用したくありません。

何か案は?

ありがとう/エリック

アップデート:

この質問が尋ねられて回答されて以来、NHibernate チームは進歩を遂げてきました。Ayende がこのブログ投稿で説明しているように、NHibernate がエンティティをフェッチしなくても、DML クエリを直接実行できるようになりました。

すべての Foo オブジェクトを削除するには、次のようにします。

このクエリは、次の SQL を生成します。

最初にエンティティを取得してから削除するよりもはるかに高速です。ただし、このようなクエリはレベル 1 キャッシュには影響しないため、注意してください。

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

c# - 親からコレクションの最初のオブジェクトを返す方法

可能であれば、単一のデータベースクエリで次のことを実行しようとしています。

私の目的は、現在の場所の URL に基づいており、そのページ コレクションから最初の Page オブジェクトを返します。

私は今、さまざまな方法を試しましたが、それらはすべて、目的の Page オブジェクトを取得するために多くのクエリを実行しているようです。

どんな助けでも大歓迎です!

デイブ・ザ・ニンジャ

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

nhibernate - 奇妙なlinqからnhibernateの問題、「System.Int32」からの無効なキャスト

次のコードでGetを呼び出すと、正常に機能します。

しかし、私がこれを行うとき:

getメソッド内の「エンティティ」は、反復すると例外をスローします。

誰もがなぜ何か考えを持っていますか?

編集:さまざまな式は次のようになります。

ジェネリックバージョン(一番上のバージョン)では、何らかの理由でxを変換しようとしているようです。これはジェネリック:sが原因である必要があります。

(わかりやすくするために名前空間は省略されています)

2番目の編集:IEntityとインスタンスタイプ(TEntity)の間で変換しようとしたときのようです

これがIEntityです:

3番目の編集:AssociationVisitorが式ツリーに適切にアクセスして「Convert(x).Id」を変換しない原因はConvert(x)のようです。

4番目の編集:そして、誰かがすでにバグhttps://nhibernate.jira.com/browse/NHLQ-11を見つけました!

ありがとう

アンドリュー

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

c# - Linq2Nibernate と IQueryable を使用したインターフェイス設計

Linq2Nibernate を使用する場合、リポジトリが IQueryable を返すようにする方が良いですか?

私の理解では、Linq を使用して Nibernate を使用する場合、クエリは .First() または Single() ect を呼び出すまで「起動」しません。では、すべてのインターフェイスから IQueryable を返して、式ツリーが起動する前に構築\操作できるようにするのが最善ではないでしょうか?

マイ リポジトリはサービスによって呼び出され、IServicie から継承されます。

編集:

まず、すべての回答に本当に感謝しています。しかし、質問に少し追加したいと思います。私はこのデザインに賛成です。テストに関する留保を完全には理解していません。プロセスがすべてのポイント、つまりすべてのフィルター ポイントでテストされている限り、実際には大きな違いは見られません。

添加:

リポジトリが IQuerrable を返さない場合、Linq2Nibernate を使用する意味はありますか?

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

linq - Linq から Nibernate への設計

Linq2Nibernate を使用する目的は、IQueryable を返し、式ツリーを構築することだと思いました。これが正しいかどうかはわかりません。

IQueryable を返さないのに、なぜ Linq2Nibernate を使用するのでしょうか?

それは他に何に使用されますか?

このトピックについてもう少し意見をいただければ幸いです

Nibernate の Linq

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

linq - Linq は 2.1 Alpha リリースで NHibernate に対応していますか?

nHibernate 2.1 Alpha は数日前にリリースされましたが、sourceforge での発表では追加機能について言及されていません。特に、LINQ が含まれているかどうかについては言及されていません。LINQ が 2.1 の一部になることを読んだことは知っていますが、それは 6 か月前のことです。LINQ が 2.1 に含まれているかどうか、またはどのような新機能があるか知っている人はいますか? 公式サイトには 2.1 アルファ版の機能に関するドキュメントはありません。

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

linq - NHibernate.Linq と MultiCriteria

MultiCriteria および ICriteria オブジェクトでできるように、NHibernate.Linq を使用して NHibernate クエリをバッチ処理する方法を知っている人はいますか?

MultiCriteria を使用すると、次のようなものを作成できます。

CreateCriteria 呼び出しを Linq 呼び出しに置き換えて、次のようにするといいでしょう。

他のほとんどのクエリに Linq API を使用しています。MultiCriteria クエリも実行する必要がある場合は、同じ Linq 構文を使用すると便利です。

ありがとう。

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

c# - NHibernate Linq と DistinctRootEntity

次のクエリを実行すると、「feedItemQuery」に複数のアイテムが含まれていることを示す例外が発生します (そのため、SingleOrDefault は機能しません)。

これは、DistinctRootEntity トランスフォーマーなしで Criteria API を使用する場合に予想される動作ですが、linq を使用する場合は、単一のルート エンティティ (FeedItem、すべての広告を含む (ICollection の) プロパティ Ads を持つ) を取得することを期待しています。

NHibernate.Linq に DistinctRootEntity トランスフォーマーを使用するように指示する方法はありますか?

私のクエリ:

マッピング:

前もって感謝します