問題タブ [fluent-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.
c# - Fluent NHibernate C# の基本的な関係に関する問題
これに関する例が見つかりません。Fluent NHibernate の基本的な理解を得ようとしていますが、適切なチュートリアルに関してはリソースが非常に不足しているようです。
次のようなテストクラスがあります。
このような別のクラスでは:
私のマッピングは正確にどのように見えるべきですか?
これを行うには、遅延ロードまたはイーガーロードのいずれかを使用して DB を適切にクエリするにはどうすればよいですか。
私はばかのように感じます..通常、私はドキュメントに従うことができますが、この種の使用法は非常に曖昧です. 誰かが私に適切な例を教えてくれますか (または例を挙げてください)?
Fluent NHibernate Web サイトから直接最新の Fluent NHibernate を使用しています。
よろしく、
化学薬品
hibernate - Hibernate/NHibernate でのクラス継承のための多対多関係のマッピング
最も単純化されたバージョンでは、ここに私の問題があります
class B
表 Bにマップ表 C
class C
にマップ
A は単なるインターフェイスであり、どのテーブルにもマップされません。
many-to-many
D -> A 間のポリモーフィック ( ) 関連付けを定義するにはどうすればよいですか?
で使用NHibernate
していFluentMapping
ます。
fluent-nhibernate - CompositeIdの原因マッピングドキュメントエラーをコンパイルできませんでした
CompositeIdを使用してレガシーシステムにマップしようとしています。ソースデータベースには複合主キーがあるため、通常のthis.Idマッピングを使用できません。
これが私の試みです:
セッションファクトリを作成しようとすると、このマッピングによりエラーが発生します:マッピングドキュメントをコンパイルできませんでした:(XmlDocument)
CompositeIdマッピングを削除して、次のように置き換えてみました。
エラーはそのマッピングで解消されますが、AssemblyPartNumberが一意ではないため、実際には使用できません。
複合主キーを使用してテーブルにマップする別の方法はありますか?
ありがとう、
マシューマクファーランド
nhibernate - 流暢な nhibernate を使用して参照される基本クラスをマッピングする
次のようなクラス階層をマップしようとしています。
クラスAは抽象的であるため、マップしたくありません。できることはわかっています。
Aをマップせず、AのすべてのプロパティをBとCにマップします。しかし、私の問題は、次のような別のクラスDもあるということです。
ここで、流暢な nhibernate 自動マッピング機能を使用してマッピングしようとすると、クラス D がマッピングされていないクラス A を参照しているというエラーが表示されますが、クラス A は実際にはサブクラス B および C を介してマッピングされます。
誰でもこれを解決する方法を知っていますか?
vb.net - Fluent NHibernateが子行をコレクションプロパティにマッピングしない(DB2データベース)
バックグラウンド:
私はレガシーDB2データベースで作業しているので、スキーマを制御できません。このサイトで回答を検索しましたが、見つかりませんでした。私もグーグルを検索しましたが、適切な答えが見つかりませんでした。
ここで説明する表は両方とも複合キーを利用しています。「ケース」ごとの適格性情報を格納する親テーブルがあります。子テーブルには、ケースに関連付けられている各個人に関する適格性情報が格納されます。子レコードはピン番号で区別され、子テーブルでのみ一意になります。
NHibernatev3.1とFluentNHibernatev1.2を使用していますが、どちらもNuGetパッケージを介して取得しています。エンティティは、FluentNHibernate自動マッパー機能を使用してマッピングされます。カスタムマッピングは、各エンティティのマッピングオーバーライドメソッドで実行されます。
もう1つ知っておくべきことは、これらのテーブルにはDB2で定義された「主キー」がないということです。それらには「一意のキー」しかありません。これは、以下の複合キーの定義に表示されます(コードを参照)。
T0026_AG_ELIGは、親テーブルと対応するPOCOクラスの名前です。
T0265_AG_IN_ELIGは、子テーブルと対応するPOCOクラスの名前です。
問題:
問題は、クエリを実行すると、すべてのデータがクエリされ、親レコードがクラスに正常にマップされますが、返された子行が親クラスのコレクションにマップされないことです。NHibernateは、親データと子データのクエリを生成します。データベースに対して独自のクエリを実行すると、条件の正しいデータが返されます。何らかの理由で、子レコードが親(T0026)クラスのプロパティにバインドされていないだけです。
質問:
T0265_AG_IN_ELIGから戻ってくる複数の行を取得して、対応するクラスにマップし、親クラス(T0026_AG_ELIG)の指定されたコレクションプロパティに適切にロードするには、何をする必要がありますか?
親のコレクションプロパティ(T0026_AG_ELIG):
親のマッピングオーバーライド(T0026_AG_ELIG):
子のマッピングオーバーライド(T0265_AG_IN_ELIG):
次のコードが実行され、クエリが実行されます。
nhibernate - Nhibernate には多くの挿入があり、追加の更新が生成されます (反転なし)
子クラスの2つのリストを持つ親クラスがあります
マッピングは
親オブジェクトを保存するたびに取得します
余分な更新を避けるために関係を設定する以外に方法はありますか?Inverse
c# - Fluent NHibernate - マッピング リスト順序付けられた子テーブルへ
流暢な nHibernate マッピングをリファクタリングしていますが、これを理解できないようです。タイプのあるプロパティを子テーブルに再マップしたいのですが、可能であればList<decimal>
単一のものを使用します。HasMany
これMap(x => x.DecimalList);
により、素敵なタイプのvarbinary(8000)
これを順序付けられた子テーブルに移動しようとして、次のことを試しました。
ParentId
これにより、 と の 2 つの列を持つ関係が得られますAmount
。唯一の問題は、子テーブルに Order または Primary Key/ID 列を配置して、リストの順序を何があっても維持することです。
これをより複雑な子オブジェクト/マップに破壊することなく、強力な int 主キー列および/または注文列を追加する方法はありますか?
nhibernate - Fluent NHibernate、Oracle 10g、および OracleClientConfiguration.Oracle10 を使用した clob のマッピング
Oracle 10g に対して Fluent NHibernate 1.2.0.712 を使用して clob フィールドをマップしようとしています。デフォルトで利用可能な System.Data プロバイダーを使用しており、以前のクライアントの問題のために ODP.Net への参照を追加しないようにしようとしていました。
ただし、マッピングされた clob プロパティを持つエンティティを挿入しようとすると、次のエラーが発生します。
ORA-01461: LONG列に挿入する場合のみLONG値をバインドできます
以下の規則を使用し、適切なプロパティを [StringLength(4000)] で装飾することで、これを修正しようとしました。
これはうまくいきませんでした。
次に、「TEXT」、「CLOB」、「clob」の値を使用して以下を試しました。どちらも機能しませんでした:
ODP をプロバイダーとして追加する以外に、この修正についてさらに提案がある人はいますか?
nhibernate - NHibernate 3.2 - すべてのプロパティで "set" メソッドが必要になりましたか?
最近、Automapped FNH / NH プロジェクトを NH 3.2 にアップグレードしましたが、多くの問題が発生しています。
オブジェクト モデルには、「ゲッター」のみを持つ多くのプロパティがあります。
これは以前は正常に機能していましたが、「プロパティのセッターが見つかりませんでした」というエラーが発生するようになりました。
なんらかの理由で自動マッピングが DB テーブルの作成に黙って失敗し、DB に保存するときに「永続化なし」エラーが発生したため、これを見つけるのは困難でした。詳細については、こちらを参照してください。
これは、LinFu が NH に組み込まれたためですか? プライベートセッターが機能しなくなったことは知っていますが、これは同様の問題のようです。
以前は Castle を使用していましたが、現在 NH が他のすべての DLL を必要としない点が気に入っていますが、オブジェクト モデルの大部分が壊れる場合はそうではありません。
これを回避する方法について何か提案はありますか?
スタックトレース
FluentNHibernate.Cfg.FluentConfigurationException: SessionFactory の作成中に無効または不完全な構成が使用されました。詳細については、PotentialReasons コレクションと InnerException を確認してください。
---> NHibernate.PropertyNotFoundException: NHibernate.Properties.BasicPropertyAccessor.GetSetter(Type type, String propertyName) の NHibernate.Mapping.Property.GetSetter(Type clazz) で NHibernate.Tuple.Entity.PocoEntityTuplizer.BuildPropertySetter(Property mappedProperty, PersistentClass mappedEntity) で NHibernate.Tuple.Entity.AbstractEntityTuplizer..ctor(EntityMetamodel entityMetamodel, PersistentClass mappingInfo) で NHibernate.Tuple.Entity.PocoEntityTuplizer..ctor(EntityMetamodel) NHibernate.Tuple.Entity の NHibernate.Tuple.Entity.EntityEntityModeToTuplizerMapping..ctor(PersistentClass MappedEntity, EntityMetamodel em) の NHibernate.Tuple.Entity.NHibernate.Persister.Entity.AbstractEntityPersister..ctor(PersistentClass persistentClass、ICacheConcurrencyStrategy キャッシュ、ISessionFactoryImplementor ファクトリ) の EntityMetamodel..ctor(PersistentClasspersistentClass、ISessionFactoryImplementor sessionFactory) ISessionFactoryImplementor ファクトリ、IMapping マッピング) で NHibernate.Persister.PersisterFactory.CreateClassPersister(PersistentClass モデル、ICacheConcurrencyStrategy キャッシュ、ISessionFactoryImplementor ファクトリ、IMapping cfg) で NHibernate.Impl.SessionFactoryImpl..ctor(構成 cfg、IMapping マッピング、設定設定、EventListeners リスナー) でNHibernate.Cfg.Configuration.BuildSessionFactory() at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() --- 内部例外スタック トレースの終了 --- FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() at BI_OverlordPackageCore.OfeDatabase.CreateSqliteSessionFactory() in C:\Bicw_Dev\Bic .Net\Private Projects\NHibernate\FNH 1.3 Mapping Bug\OfeDatabase.cs: C:\Bicw_Dev\Bic.Net\Private Projects\NHibernate\FNH 1.3 Mapping Bug\OfeDatabase.cs の BI_OverlordPackageCore.OfeDatabase.GetMainSession() の 192 行: C:\Bicw_Dev\Bic.Net\Private Projects\NHibernate\FNH 1.3 Mapping Bug\OfeDatabase.cs:line 305 at FNH_1._3_Mapping_Bug.Form1.button1_Click( C:\Bicw_Dev\Bic.Net\Private Projects\NHibernate\FNH 1 のオブジェクト送信者、EventArgs e)。3 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs) で System.Windows.Forms.Button.OnClick(EventArgs e) で System.Windows.Forms.Control.OnClick(EventArgs e) で Bug\Form1.cs:line 23 をマッピングします。 mevent) で System.Windows.Forms.Control.WmMouseUp(Message& m、MouseButtons ボタン、Int32 クリック) で System.Windows.Forms.Control.WndProc(Message& m) で System.Windows.Forms.ButtonBase.WndProc(Message& m) でSystem.Windows.Forms.Button.WndProc(Message& m) で System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) で System.Windows.Forms.Control.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows .Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)OnClick(EventArgs e) で System.Windows.Forms.Button.OnClick(EventArgs e) で System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) で System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons ボタン, Int32 クリック) System.Windows.Forms.Control.WndProc(Message& m) で System.Windows.Forms.ButtonBase.WndProc(Message& m) で System.Windows.Forms.Button.WndProc(Message& m) で System.Windows。 Forms.Control.ControlNativeWindow.OnMessage(Message& m) System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)OnClick(EventArgs e) で System.Windows.Forms.Button.OnClick(EventArgs e) で System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) で System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons ボタン, Int32 クリック) System.Windows.Forms.Control.WndProc(Message& m) で System.Windows.Forms.ButtonBase.WndProc(Message& m) で System.Windows.Forms.Button.WndProc(Message& m) で System.Windows。 Forms.Control.ControlNativeWindow.OnMessage(Message& m) System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)System.Windows.Forms.ButtonBase.WndProc(Message& m) で System.Windows.Forms.Button.WndProc( System.Windows.Forms.Control.Control.ControlNativeWindow.OnMessage(Message& m) で System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32メッセージ、IntPtr wparam、IntPtr lparam)System.Windows.Forms.ButtonBase.WndProc(Message& m) で System.Windows.Forms.Button.WndProc( System.Windows.Forms.Control.Control.ControlNativeWindow.OnMessage(Message& m) で System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32メッセージ、IntPtr wparam、IntPtr lparam)System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam) の Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam) の Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
nhibernate - Table-Per-SubClassが機能しない
かなり単純な(またはそう思うでしょう!)問題があり、それが私を悩ませ始めています。
簡単なクラスのセットがあります。
基本クラス「Product」は他のクラスに継承されます。Productには文字列Discriminator列「ProductType」があり、NHが正しいサブクラスを返すことができます。
以下は私が取り組んでいるものの簡単なバージョンです。
ただし、単純なSession.QueryOver.List()を実行すると、実行されるクエリは次のようになります。
FROM製品this_
明らかに、「Berths」はProductテーブルにはなく、「MotorHome」テーブルにあります。
私はかなり単純な何かを見逃していると確信していますが、私がここで間違っていることを一生理解することはできません。
どんな助けでも大歓迎です。