問題タブ [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 を使用した列挙型のコレクションのマッピング
NHibernate を使用した列挙型のコレクションのマッピング
具体的には、マッピングに属性を使用します。
現在、私はコレクションをタイプ Int32 としてマッピングする作業を行っており、NH がそれを処理しているように見えますが、それは正確には理想的ではありません。
マップしようとしている列挙型のコレクションをマップしようとすると、「型を特定できません」というエラーが表示されます。
クラスを次のように定義すると言った投稿を見つけました
次に、列挙型をCEnumTypeとしてマップしますが、これにより「CEnumTypeがマップされていません」または同様の結果が得られます。
それで、誰かがこれを行った経験がありますか?
とにかく、例を示すための単純な参照コードのスニペットです
では、この列挙型のコレクションを実際の列挙型としてマップするための正しい属性を誰かが取得しましたか? それらが int ではなく文字列としてデータベースに格納されていれば本当にいいのですが、完全に必要というわけではありません。
nhibernate - NHibernate: 2 つのクラスのフィールドを結合するにはどうすればよいですか?
これは、私のデータベース モデルの簡略化されたバージョンです。次のような「Image」と「HostingProvider」の 2 つのテーブルがあります。
[画像]
- ID
- ファイル名
- ホスティングプロバイダー_id
【ホスティング事業者】
- ID
- base_url
Image HostingproviderId は、HostingProvider テーブルに対する多対 1 の外部キー関係です。(各イメージには 1 つのホスティング プロバイダーがあります)。
基本的に、Image クラスを次のようにしたいと考えています。
[画像]
- ID
- base_url
- ファイル名
NHibernate で、HostingProvider テーブルの base_url を Image クラスに結合するマッピング ファイルを作成するにはどうすればよいですか?
nhibernate - NHibernate で ID 列を偽造する方法はありますか?
単純なオブジェクトを重複レコードを含むテーブルにマッピングしていて、コードで重複を許可したいとします。このテーブルを更新/挿入/削除する必要はなく、レコードを表示するだけです。
マッピング ファイルに偽の (生成された) ID 列を配置して、NHibernate に行が一意であると思わせる方法はありますか? すべての列で重複が発生する可能性があるため、複合キーの作成は機能しません。
これが不可能な場合、この問題を回避する最善の方法は何ですか?
ありがとう!
編集:クエリが進むべき道のようでした
c# - NHibernate: 1 つの基本クラス、複数のマッピング
私はNHibernateに比較的慣れていませんが、最近のいくつかのプログラムで使用しており、大好きです。4 ~ 5 つのデータベースのデータを 1 つのデータベースに集約する必要がある状況になりました。具体的にはシリアルナンバーデータです。各データベースには独自のマッピング ファイルがありますが、最終的にはすべてのエンティティが同じ基本構造 (シリアル クラス) を共有します。
NHibernate がクラスごとのマッピングを必要としていることは理解しています。そのため、最初に考えたのは、ベースとなるシリアル クラスを用意し、それを異なるデータベースごとに継承して、一意のマッピング ファイルを作成することでした (継承されたクラスにはコンテンツがありません)。これは、すべてのデータを取得してオブジェクトを設定するのに最適です。私が次にやりたいことは、これらの継承されたクラス (適切な用語が何であるかはわかりません) を、基本クラス マッピングを使用して基本クラス テーブルに保存することです。
問題は、オブジェクトに特定のマッピング ファイルを使用するよう NHIbernate に強制する方法がわからないことです。「session.save()」を使用する場合、継承されたクラスを基本クラスにキャストしても何も起こりません (マッピングがないことを訴えます)。
使用するマッピングを明示的に指定する方法はありますか? または、継承されたクラスを基本クラスにキャストするために欠落している OOP プリンシパルがいくつかありますか? それとも、このアイデアは単に悪いものですか。
NHibernate (第 8 章) に関して私が見つけたすべての継承は、この関数に完全に適用できるようには見えませんが、間違っている可能性があります (table-per-concrete-class はおそらく便利に見えますが、私はできます. NHibernate が何をすべきかをどのように判断するかについては、完全に理解できません)。
database - Hibernate の多対 1 および一意の制約違反
NHibernate で多対 1 の関係をモデル化しようとすると問題が発生します。この場合、「1」側のオブジェクトは列に一意の制約があります。問題は次のとおりです。
「Person」と「Country」の 2 つのテーブルがあります。各人物には、関連付けられている国が 1 つだけあります。国は多くの人を持つことができ (本当に! :))、国名は一意です。Person 側のマッピングは次のとおりです。
国側:
データベースで、Country テーブルの Name 列に一意の制約を追加しました。Person インスタンスで Save() を呼び出すと、NHibernate は単に INSERTS を実行しようとしますが、Country Name が存在するかどうかを確認し、Person テーブルの CountryID 列でその ID を使用することを期待します。代わりに、データベース内の一意の制約に違反した結果として例外がスローされます。
私には、Nibernate が正しいことを行うのに十分なマッピング メタデータを持っている必要があるように思えます (または、プロパティの一意の属性がこれを保証していませんか?)。誰かがこれを行う方法を知っているか、回避策を持っていますか?
ありがとう、
マルティン
c# - Fluent NHibernate - サブクラスを1対1でマップする方法は?
3 つのクラスがあるとします。A をインスタンス化することは有効ですが、追加情報を追加して A をサブクラス化する特殊なケース B および D もあります。
(流暢な) NHibernate でこのマッピング ファイルを作成するにはどうすればよいですか?
次のことを試しましたが、まったく機能しません。
c# - 共通の列を共有するが外部キーを共有しない NHibernate クラスに参加する
クラスにマップしたいテーブルがいくつかあります。テーブルは次のようになります。
基本的に私がやりたいことは、Product テーブルを AssetId の Disposal テーブルに結合して、私の製品が資産によって結合された Disposal のコレクションを持つようにすることです。次のマッピングを定義しましたが、NHibernate (1.2) はバッグで定義されたキー列を無視しているようで、ProductId (つまり、Product.ProductId = Disposal.AssetId) によって Product テーブルを Disposal テーブルに結合することを選択します。これがバグなのか、それとも適切に定義していないのかはわかりませんが、誰かがこれを行う方法を持っているなら、私は最も素晴らしいでしょう.
nhibernate - 同じオブジェクト タイプを含む複数のコレクション プロパティを持つクラスのマッピング
当社のシステムは、ユーザーが選択した To / CC / BCC 連絡先のリストを含むメールを生成します。私はそれらを SQL Server データベースに次のように保存したいと考えていました。単純化されたデータベース テーブル構造は次のとおりです。
私には、これは Email オブジェクトと Contact オブジェクトの間の多対多の関係の場合のように見えます。ただし、次のコードを有効にできるように、メール ドメイン オブジェクトに各リスト (To / CC / BCC) の連絡先に対して 3 つの個別の IList プロパティを持たせたいと考えています。
これは、追加のドメイン オブジェクト (EmailContact) を追加せずに実行できますか? Billy McCafferty がここで述べているように、追加のドメイン オブジェクトで 2 つの多対 1 の関係を使用する必要がありますか?
また、これを NHibernate マッピング ファイルで表すにはどうすればよいでしょうか。
nhibernate - NHibernate - 構成ファイルを支援する優れたツールはありますか?
構成ファイルの作成と保守を支援する GUI ベースのツールはありますか? 構成ファイルをコード生成するためのコード ツールはありますか? これを少し簡単にするための最良の方法は何ですか? ほとんどの人は今、Castle ActiveRecord を使用しているだけですか?
nhibernate - Fluent NHibernate: 1 対多の双方向マッピングを作成する方法は?
基本的な質問: Fluent NHibernate で双方向の 1 対多のマップを作成するにはどうすればよいですか?
詳細:
多くの子を持つ親オブジェクトがあります。私の場合、子に親がないと意味がないので、データベースでは親への外部キーに NOT NULL 制約を持たせたいと考えています。Fluent NHibernate マッピングからデータベースを自動生成しています。
次のような多くの子オブジェクトを持つ親があります。
これが私が始めたマッピングです:
Detail テーブルでは、Summary_id を Not Null にする必要があります。これは、私の場合、Detail オブジェクトがサマリー オブジェクトにアタッチされていないことは意味がないためです。ただし、HasMany() マップを使用するだけでは、Summary_id 外部キーは null 可能のままになります。
NHibernate のドキュメント ( http://www.hibernate.org/hib_docs/nhibernate/html/collections.html ) で、「親が必要な場合は、双方向の 1 対多の関連付けを使用する」ことがわかりました。
では、Fluent NHibernate で双方向の 1 対多マップを作成するにはどうすればよいでしょうか。