問題タブ [fluent-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.
nhibernate - Fluent NHibernate select n+1を防止する
私はかなり深いオブジェクトグラフ(5〜6ノード)を持っており、その一部をトラバースすると、NHProfは「SelectN + 1」の問題があると言っています(私はそうしています)。
私が知っている2つの解決策は
- 熱心な負荷の子供
- オブジェクトグラフを分解します(そして熱心な負荷)
私はこれらのどちらも本当にやりたくありません(ただし、グラフが成長することを予測しているので、後でグラフを分解する可能性があります)
今のところ....
NHibernate(FluentNHibernateを使用)に、子にアクセスしようとするたびに、子を反復処理するときにselect-n + 1-ingを実行するのではなく、すべてを一度にロードするように指示することはできますか?
また、「無制限の結果セット」を取得しています。これはおそらく同じ問題です(または、可能であれば上記の解決策で解決されます)。
各子コレクション(グラフ全体)には約20のメンバーしかありませんが、20 ^ 5は多いので、ルートを取得するときにすべてを熱心にロードしたくはありません。その近くに行きます。
編集:後付け....子をレンダリングしたいときにページングを導入したい場合はどうなりますか?ここでオブジェクトグラフを壊す必要がありますか、それともこれらすべての問題を解決するために使用できるいくつかのこっそりがありますか?
nhibernate - (Fluent) NHibernate : 異なるテーブルのフィールドで構成される 1 つのエンティティ
異なる DB テーブルのフィールドで構成されるエンティティを持つことができるように、NHibernate マッピングを記述する方法はありますか?
たとえば、個人と住所のテーブルがあり、個人オブジェクトに住所フィールドを表示したいとします。
次のようなエンティティが必要です。
fluent-nhibernate - Fluent NHibernate AutoMapping によるカスケード保存
Fluent NHibernate で AutoMap Persistence Model を使用してカスケード保存を「オン」にするにはどうすればよいですか?
次のように:
私は人物を保存し、アームも保存する必要があります。現在、私は得る
「オブジェクトは保存されていない一時インスタンスを参照しています - フラッシュする前に一時インスタンスを保存してください」
このトピックに関する記事を見つけましたが、古くなっているようです。
.net - NHibernate:列はnullを許可しません。INSERTが失敗する
私には2つのエンティティPersonとAddressがあり、Personには1つのAddressがあります。
編集:アドレスはすでに存在します。外部キーを保存したいだけです。
私がこれをするとき:
この例外が発生します:
列'Key'、テーブル'Address'に値NULLを挿入できません。列はnullを許可しません。INSERTは失敗します。ステートメントは終了しました。
Personからのマッピングファイルフラグメント
なぜこれが発生するのかわかりません。アドレスキーに値を指定しています。私のアプローチには欠陥がありますか?
nhibernate - NHibernate を使用してプロパティにデフォルト値を設定することは可能ですか?
マッピングには Fluent NHibernate を使用し、データベース スキーマへの SchemaExport クラスを使用しています。
NHibernate を使用して、生成されたデータベース スキーマのプロパティ/列のデフォルト値を設定することはできますか?
fluent-nhibernate - Fluent NHibernate チュートリアルはどこにありますか?
私はググって周りを見回しましたが、Google検索の最初の数ページにはない隠された宝石を知っている人はいますか....
nhibernate - ArgumentOutOfRangeException : インデックスが範囲外でした
値オブジェクトへの参照を持つエンティティを検証するために PersitenceSpecification クラスを使用するたびに、この奇妙な ArgumentOutOfRangeException が発生します。
これが私が得ているエラーです:
TestCase 'Then_a_catalog_object_should_be_persistable' が実行されませんでした: System.ArgumentOutOfRangeException : インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:System.Collections.Generic.ListのSystem.ThrowHelper.ThrowArgumentOutOfRangeException()のSystem.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument引数、ExceptionResourceリソース)のindex
1.get_Item(Int32 index) at System.Data.SQLite.SQLiteParameterCollection.GetParameter(Int32 index) at System.Data.Common.DbParameterCollection.System.Collections.IList.get_Item (Int32 index) at NHibernate.Type.GuidType.Set(IDbCommand cmd, Object value, Int32 index) at NHibernate.Type.NullableType.NullSafeSet(IDbCommand cmd, Object value, Int32 index) at NHibernate.Type.NullableType.NullSafeSet(IDbCommand st, Object value, Int32 index, ISessionImplementor session) at NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate (Object id, Object[] fields, Object rowId, Boolean[] includeProperty, Boolean[][] includeColumns, Int32 table, IDbCommand statement, ISessionImplementor session, Int32 index) at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Boolean[] notNull, Int32 j, SqlCommandInfo sql, Object obj, ISessionImplementor session) at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Object obj, ISessionImplementor session) at NHibernate.Action.EntityInsertAction.Execute() at NHibernate.Engine.ActionQueue.Execute(IExecutable executable) at NHibernate.Engine.ActionQueue.ExecuteActions(IList list) at NHibernate.Engine.ActionQueue.ExecuteActions() at NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions (IEventSource session) at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush (FlushEvent event) at NHibernate.Impl.SessionImpl.Flush() at NHibernate.Transaction.AdoTransaction.Commit() d:\Builds\FluentNH\src\FluentNHibernate\Testing \PersistenceSpecification.cs(127,0): at FluentNHibernate.Testing.PersistenceSpecification
1.TransactionalSave (オブジェクトのプロパティ値) d:\Builds\FluentNH\src\FluentNHibernate\Testing\PersistenceSpecification.cs(105,0): at FluentNHibernate.Testing.PersistenceSpecification`1.VerifyTheMappings () C:\Source\SupplyChain\Tests\ Retailer.IntegrationTests\Mappings\CatalogItemMappingSpecifications.cs(14,0): SupplyChain.Retailer.IntegrationTests.Mappings.When_verifying_the_class_mapping_of_a_catalog_item.Then_a_catalog_object_should_be_persistable () で
長い投稿で申し訳ありませんが、これで数時間忙しくなりました。NH 自体のこの JIRA チケットを見つけたので、これは FNH が原因ではない可能性があります。
http://forum.hibernate.org/viewtopic.php?p=2395409
私は自分のコードで何か間違ったことをしていることをまだ望んでいます:-)。何か考えはありますか?
前もって感謝します
fluent-nhibernate - NHibernateの条件付き関係
ObjectType列によると、2つのテーブルとの関係が必要なテーブルがあります。
たとえば、ObjectType = 1の場合、列ObjectはTABLE1を指す必要があり、ObjectType = 2の場合、TABLE2を指す必要があります。
NHibernateマッピングまたはFluentNHibernateとしてこれを達成できますか?
そうでない場合は、両方のテーブルクラスに同じインターフェイスを使用することをお勧めしますか?(注:テーブルスキーマは完全に異なります)