問題タブ [nhibernate-mapping]
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に渡されたマッピング構成を表示するにはどうすればよいですか?
activerecord から nhibernate に渡されたマッピング構成/マッピング xml ファイルを表示することは可能ですか?
.net - Nhibernateのプライマリテーブルから値を取得するためにマップする方法は?
マッピング ファイルのプライマリ テーブルから値を取得しようとすると、問題が発生します。
私のテーブル:
私のクラス:
FullName 値を取得し、CustomerOrder 流暢なインターフェイス マッピング クラスで CustomerName プロパティにマップするにはどうすればよいですか?
c# - NHibernate マッピング - 1 対 1 (または 1 対 0)
バーナティアン!
テーブル [dbo].[Wibble] と別のテーブル [dbo].[WibbleExtended] があります。
[Wibble] はメイン テーブルで、[WibbleExtended] はその他のフィールドが保存されるオプションのテーブルです。[WibbleExtended] テーブルには、メインの [Wibble] テーブルよりもはるかに少ないエントリがあります。これは、スペースの問題を解決するために当時行われたと思います (Wibble には多くの行があり、WibbleExtened には多くの列があります)。
各テーブルの ID は同じで、外部ソースから取得されます。
いえ
と
は同一であり、2 つのテーブルがどのように関係しているかを示しています。
注意: スキーマを変更することはできません。私はこれを、私がほとんど制御できないレガシーシステムに押し付けています。
周りを検索すると、1 対 1 のマッピングには問題があり、2 つの多対 1 のマッピングを使用するのが一般的な知恵です。
現在、私のマッピングは次のとおりです。
と
これに関する問題は、次のようなエラーが発生することです
私は周りを見回しましたが、これは正しい戦略のように見えます.最後のハードルに落ちているだけです.
問題はIDジェネレーターですか?マッピングの他の側面は?
正解者にはミンスパイをプレゼント。
編集:わかりました-@James Gregoryを介してこれを解決するために私がしたことは次のとおりです。
単体テストを WibbleExtended テストから Wibble テスト クラスに移動し、必要な変更を加えました。
Wibble.hbm.xml に以下を追加
/li>対応するプロパティを Wibble POCO に追加しました。
WibbleExtended に関連するすべてのコードを削除しました。
テストを実行し、すべて合格し、チェックインしました。ビルドは合格しました。クリスマス ビールを飲みに行きました (そのため、これを更新するまでに数日かかりました! :-))
nhibernate - NHibernate: 1 対 1 のマッピングで遅延読み込みを有効にする方法
nhibernate 内の 1 対 1 の関係は、「false」または「proxy」のいずれかで遅延ロードできます。怠惰な1対1のマッピングを行う方法を誰かが知っているかどうか疑問に思っていました.
プライベート フィールドにマップされた遅延セットを使用し、パブリック プロパティがそのセットの最初の結果を返すようにすることで、同じ結果を達成するためのハックを考え出しました。動作しますが、最もクリーンなコードではありません...
前もって感謝します!
nhibernate - NHibernateをテーブルAからテーブルA自体に多対多でマッピングするにはどうすればよいですか?
助けてください!次の状況をマッピングする方法がわかりませんでした。
テーブルは1つだけです。
[テーブル]ユーザー{id、name}
私のクラスはこんな感じ
各ユーザーは他のユーザーと関係があります。たとえば、「ユーザーA」には、他のユーザーである多くの友達がいる可能性があります。
このためのマッピングはどうあるべきですか?これは多対多の関係であるべきだと思いますが、HBMがどのように見えるかは本当にわかりませんか?
ありがとう、
nhibernate - NHibernate2 クエリは、プロキシからコレクションをフェッチするときに接続されます。これは正しい動作ですか?
これは私のクラスです:
これは私のマッピングです(Fluent NHibernate):
問題は、このコードを実行するときです。
最後の行で、NHibernate は次のクエリを生成します。
質問: クエリが複雑に見えるのはなぜですか? UserFriendId
3 つのフィールド ( 、UserId
、FriendId
)のみを選択する必要があります。またはNHibernateの内部で何かが起こっていますか?
c# - NHibernate ISession.save(newTransientEntity) が生成された Id のみを返し、エンティティの Id プロパティを更新しないというのは本当ですか?
NHibernate.Mapping.Attributes を使用すると、次のようなエンティティ クラスがあります。
次のようなコードを使用して、一時的なエンティティを永続化コンテキストに追加するとします。
assert は成功すると思いますが、実際の結果は false です。save メソッドが生成された値でエンティティの Id プロパティを更新するという印象があります。NHibernate 1.2 と 2.0 の両方を使用してこれをテストしましたが、同様の結果が得られました。
質問は次のとおりです。
- この動作 (エンティティの ID を更新しない) は設計によるものですか、それともマシンで NHibernate のコンパイルが間違っていますか?
.net - 文字列の主キーと関係を持つNHibernate
私はこの問題に 1 時間悩まされていましたが、最終的に問題を発見しました。
状況
文字列を主キーとして使用するテーブルがあります。このテーブルには、この主キーから離れたさまざまな多対1および多対多の関係があります。
テーブルから複数のアイテムを検索すると、すべての関係が返されました。ただし、主キー (文字列) でオブジェクトを取得しようとすると、リレーションシップが返されず、常に 0 に設定されていました。
部分的な解決策
そこで、ログを調べて、SQL が何を行っていて、正しい結果が返されているかを確認しました。だから私はあらゆる種類のランダムな方法でさまざまなことを試し、最終的にそれがうまくいきました. get メソッドに渡される文字列の大文字と小文字の大文字と小文字は、データベースにあるものとまったく同じではありませんでした。そのため、リレーションシップ アイテムをメイン エンティティと一致させようとしたときに、何も見つかりませんでした(または、少なくとも NHIbernate は一致しませんでした)。上で述べたように、SQL は実際には正しい結果を返していたからです)
本当の解決策
他の誰かがこれに出くわしましたか? もしそうなら、NHibernate に SQL の結果をエンティティに一致させるときに大文字と小文字を区別しないようにするにはどうすればよいでしょうか? 以前は完全に機能していたのに、突然、文字列のケースに注意を払い始めたのはばかげています。
nhibernate - 流暢なNHibernateとの1対多の関係をどのようにフィルタリングしますか?
データベースの「IsDeleted」フラグを使用して削除済みとして設定できる可能性のあるエンティティのセットがあります。
これは通常のエンティティのセットには問題ありませんが、このフラグを持つ可能性のある多くの子エンティティを持つ親がある場合、NHibernateが「IsDeleted」がfalseに設定されている子エンティティの選択を自動的に処理できるようにしたいと思います。
とにかく流暢なNHibernateでこれを行うことはありますか?または、ビューを流暢に追加できるXMLマッピング。
ありがとう
.net - Nibernate 外部キーから外部キー コレクションへのマッピング?
Staff と e SecuredPage エンティティがあり、プロパティは以下のとおりです
スタッフ
id Name LastName Level // SecuredPage.RoleId
保護されたページ
id PageId RoleId // Staff.Level
Staff エンティティに SecuredPage のコレクションを持ちたいので、1 対多ですが、マッピングでそれを処理する方法がわかりませんでした。
Staff.hbm.xml
上記のコードで、Nhibernate は SecuredPage テーブルからすべてのレコードを取得します。
でもそうであってほしい
何らかの理由でロール エンティティを作成しなかったため、レベル (ロール) に基づいてスタッフのセキュリティで保護されたページを直接取得しようとしています。
私の問題について教えていただければ幸いです。Nhibernate ガイドを確認し、コレクション マッピングについてすべて読みましたが、わかりませんでした。
ありがとう