問題タブ [nhibernate-collections]
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 - 主キーNHibernateなしで子をフェッチ
マッピングによってオブジェクトのコレクションを親オブジェクトに取得しようとしています。
主キーがguid(Id)である親オブジェクト「ScoreCard」と、主キーがguid(Id)である子「Score」オブジェクトがあります。両方のオブジェクトが持っている 2 つのフィールドに基づいて親の子オブジェクトを選択したいのですが、それを機能させることができません。マッピングは次のとおりです。
私はデータベースを設計しませんでしたが、ScoreCard オブジェクトは、必要な列と悪の GUID の両方を返すビューから取得されます。私が何を試しても、NHibernate は外部キーが主キーと同じではないという例外をスローし続けます。
これは私には最も単純な要件のように思えます.いくつかの基準を与えられたもののコレクションを取得します.なぜ私はそんなに行き詰まっているのですか?
お手数おかけしますが、サンプルコードが悪くてすみません(親戚の家でサブリミナルゴルフ観戦)。
nhibernate - lazyloadのNHibernate基準
NHibernateの遅延ロードされたコレクションに基準を追加できるかどうか誰かに教えてもらえますか?
たとえば、従業員を含む部門があるとします... IDで部門を取得してから、従業員を遅延ロードします...ただし、数千人の従業員がいて、最後に採用された従業員のみが必要だとします。 30日。
GetDeptById(1)
|
-遅延読み込みの従業員(HireDate> = 7/1/2009)
マッピングファイルのフィルターを使用してこれを実行できるようです...しかし、コードの遅延読み込みに何らかの基準を追加できますか?
nhibernate - DDD コレクションで NHibernate コレクション フィルターを使用する
NHibernate でドメイン モデルをマップしようとしています。ドメイン モデルは、私が考える DDD スタイルで実装されています。マッピングはほとんど機能しますが、コレクションでコレクション フィルターを使用しようとすると、次のような例外が発生します。コレクションは参照されていません。
コレクションの実装方法に問題があることはわかっています。私の質問: この方法で実装されたコレクションに対して nHibernate でコレクション フィルターを使用することは可能ですか、それとも単に忘れるべきでしょうか。つまり、nHibernate はこれで動作しません。
コードは次のとおりです。
主な問題は、内部アドレス コレクションを公開したくないということです。nHibernate がフィールドと直接対話するように、field.camelcase-underscore アクセスを使用します。私は Hibernate in Action の本に取り組んできましたが、今はコレクション フィルターを扱う第 7 章にいます。
これを回避する方法はありますか。次のように内部コレクションを公開することで機能するようになりました。
しかし、私は本当にこれをしたくありません。
助けていただければ幸いです。
ジデ
c# - NHibernate を使用してエンティティのコレクションを正しい方法で更新する
NHibernate の仕組みに関する簡単な質問:
他の子エンティティのコレクションを持つ親エンティティがあります。これらの子エンティティには、それらが属する親エンティティへの参照があります。ここで、親エンティティに子を追加する Add メソッドを実装したいと考えています。その Add メソッドは、子を新しい親コレクションに追加するだけでよいのでしょうか?それとも、子の親参照も更新する必要があるのでしょうか?それとも、追加されたエンティティを以前の親コレクションから削除する必要があるのでしょうか? そのメソッドでこれらすべてのことを行う必要がありますか、それとも NHibernate が私のために何かをしてくれますか?
ありがとう。
asp.net-mvc - NHibernate-プロパティ/列に基づいてエンティティを並べ替える+管理方法は?
NHibernateを使用してASP.NETMVCeコマースアプリを作成しています。エンドユーザーが製品カテゴリの順序を制御できるようにしたいと考えています(単にそれらをアルファベット順に表示するだけではありません)。
通常、(タイプの)OrderIndex / Sort列int
をCategoryテーブルに追加し、プロパティをCategoryドメインクラスに追加します。ただし、問題は、カテゴリが並べ替え、追加、および削除されるときに、この特別なOrderIndex/Sort列を常に管理する必要があることです。呼び出し元がプロパティを直接設定する必要がないように、非表示にして透明にしたいです。
確かに私はこれらすべてを管理するために独自のコードを書くことができましたが、NHibernateに役立つものが組み込まれているかどうか、またはこのプロパティを自動的に接続できるかどうかを知りたいと思いました。
そうでない場合は、OrderedEntity基本クラス(すべてのドメインオブジェクトはエンティティベースから派生)を作成し、IOrderedRepositoryベースリポジトリも作成することを考えていました。このようなもの:
これは良いアプローチのように見えますか?劣ったホイールを作り直したくありません。
nhibernate - Hibernate カスタム コレクション タイプ
というエンティティ オブジェクトがあり、このエンティティには というタイプPatient
のプロパティがあります。Visits
VisitsCollection
VisitsCollections
の子クラスですIList<Visit>
が、コレクションにいくつかのカスタム ロジックも追加します (自動順序付け、検証、通知など)。
コレクションに追加されたエンティティにいくつかのデータを追加し、他のいくつかの事務処理を透過的に実行するため、カスタム コレクション タイプを使用する必要があります。
今、NHibernate でそれをマップしたいので、以下を作成しました:
私は例外を取得しています:
タイプ「NHibernate.Collection.PersistentList」のオブジェクトをタイプ「...VisitsCollection」にキャストできません
訪問プロパティにアクセスしているときはいつでも。
私もこのようにマッピングしようとしました:
それでも、私はこの例外を受けています:
カスタム タイプは UserCollectionType を実装していません: .....VisitsCollection
VisitsCollection
コレクションクラスはフレームワークの一部であるため、NHibernate 型から継承したくありません(データベースだけでなく、多くのシナリオで使用されるため)。
これをマップしてコードの構造を維持する方法についてのアイデアはありますか?
前もって感謝します。
nhibernate - 異常な NHibernate コレクション/継承マッピング
関連するクラスは次のとおりです。
関連するマッピング部分は次のとおりです。
これまでのところ、すべてが明確であることを願っています。
私がやろうとしているのは次のとおりです。Section
オブジェクトを選択するときに、「軽量」ArticleMetadata
オブジェクトのみを含めるようにします。しかし、DB に保存するときは、NHibernate にオブジェクトもSection
永続化してもらいたい:Article
現在、SaveOrUpdate
エラーなしで終了しますが、本格的なArticle
オブジェクトは部分的にしか保存されません。つまり、そのContent
プロパティの値が DB に到達することはありません。
Article
個別に保存( session.Save(new Article(...));
) すると期待どおりに機能し、マップされたすべてのプロパティが保存されます。
要約すると、ArticleMetadata
とArticle
オブジェクトの両方をSection.Articles
コレクションに追加し、それらを適切に保存したいと考えています。この種の動作はまったく可能ですか?
wpf - Fluent-wpfでNibernate:uNhAddIns...ObservableListTypeを使用するための規則デフォルトとして?
Observableコレクションを必要とするwpfでFluent-Nibernateを使用しようとしています(INotifyCollectionChanged
インターフェイスを実装します)。
uNHAddinsで:NHibernateの非公式アドインが見つかりました
を実装しINotifyCollectionChanged
ます。Fluent-Nibernateで次のように構成できます
デフォルトのIList実装として常にObservableListTypeを使用するFluent-Nibernateを使用してコンベンションを実装する方法を知っている人はいますか?
更新:完璧な解決策は、Fluent-NHibernate-Automapperに置き換えるものです。
.net - NHibernate: IStatelessSession を使用して読み取り値のコレクションを手動で処理する
データベースへのエンティティの一括読み込み中に、受信エンティティが値を計算するためにデータベース内の既存のエンティティに依存するシナリオがあります。この依存関係自体には、この値の計算に使用される値の型のコレクションがあります。を使用してIStatelessSession
いるため、エンティティがセッション経由で読み込まれると、このコレクションは無視されます。このコレクションの負荷を手動で処理したいのですが、その方法に関するガイダンスを見つけるのに苦労しています。
コレクションに手動で値をクエリする最も簡単な方法を提案できる人はいますか?
nhibernate - Nhibernate iesicollection には false が含まれています
Nhibernate では、net 4 ISet インターフェイスの代わりに Iesi Set を使用する必要があります。次のコード スニペットでは、iesi セットにアイテムが含まれているかどうかを確認します。
変数 _substances は HashedSet を参照します。一時的な手段としてコードをチェックするためだけにテスト変数を追加しました。次のようにオーバーライドされた Equals メソッドがあります。
これにより、アイテムは Id (Guid) をハッシュとして返します。デバッガーでチェックインすると、次の結果が得られます。
そのコレクションの contains メソッドを使用して、コレクション内でまったく同じオブジェクトが検出されないのはどうしてでしょうか?? デバッガーでこれを行うこともできます。
明らかに、_substances.Remove(substance) も機能しません。いくつかの追加調査の後、NH がコレクションを独自の Persistent Generic セットに置き換えることがわかりました。このセットを使用すると問題が発生します。そのセットからアイテムを取得し、同じセットで Contains を呼び出すと、常に false が返されます。GetHashCode と Equals をオーバーライドし、Equals メソッドに return true を入れました。