問題タブ [mapping-by-code]

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.

0 投票する
1 に答える
1453 参照

c# - NHibernate 3.3: 複合外部キーを使用した多対多の関係のマッピング

コードシステムによるNHibernateの「セクシーな」マッピングを使用して、次の状況をマッピングする方法を見つけようとしています。運が悪いので、しばらくの間これを理解しようとしていたので、助けてください! コンポーネントを使用して複合キーを表しています。以下は、私がマッピングしようとしているテーブルです。

これが私の現在の試みです(まったく機能していません!)

アカウント:

カード:

これが可能であることを教えてください!

0 投票する
1 に答える
11243 参照

c# - NHIbernateの式でプロパティマッピングを使用する

プロパティを別のテーブルの任意の列にマップしようとしています。ドキュメントによると、式は任意のSQLである可能性があり、私が見た例も同様です。

ただし、NHibernateが生成するSQLは有効ではありません。数式のSQLステートメント全体がステートメントの途中に挿入されていSELECTます。

0 投票する
1 に答える
150 参照

c# - コードによるマッピングを使用した NHibernate での単一列の結合

Item と ItemContent の間の次の関係を考えてみましょう。

アイテム
ItemId
ItemName

ItemContent
ContentId
ItemId
コンテンツ
ContentType

私がやりたいことはContent、マッピング自体で提供されるか、他の方法で注入される ContentType に基づいて ItemContent から Content 列を結合する Item のプロパティを持つことです。

これを達成するための最良の方法は何ですか?これを達成する最も簡単な方法は何ですか?

0 投票する
3 に答える
1814 参照

c# - NHibernate 3.3: コードによるマッピングの Id でタイプを Ansistring に設定する

次のエンティティをそのままマッピングしています。

コメント アウトされたコードでわかるように、コンポーネントを Id として使用する場合、NHibernateUtil を使用して型を AnsiString として設定できます。ただし、プレーンな Id マッピングで何をすべきかわかりません。

を使用してみnew NHibernate.Type.AnsiStringType()ましたが、コンストラクターが定義されていないことに不満があります。

アイデアはありますか?

0 投票する
1 に答える
742 参照

nhibernate - サブクラスの複数の層を nhibernate エンティティにマップする方法 (bycode を使用)?

いくつかのマッピングをセットアップしようとしていますが、この例外が発生しています:

マップされていないクラスを拡張できません: CommonEntity

[MappingException: マップされていないクラスを拡張できません: CommonEntity]
NHibernate.Cfg.XmlHbmBinding.ClassBinder.GetSuperclass(String extendsName) +217
NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema, IDictionary`2 inheritedMetas) +352
NHibernate.Cfg.XmlHbmBinding .MappingRootBinder.Bind(HbmMapping mappingSchema) +85
NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) +156

私は3つのクラスを持っています。Entity、CommonEntity、および User。エンティティまたは共通エンティティ テーブルはなく、ユーザー テーブルのみです。ユーザーは CommonEntity から継承し、CommonEntity は Entity から継承します。Entity と CommonEntity は抽象的です。

このマッピングを定義しました:

これは次のように使用されます:

User と CommonEntity の両方が「types」配列にあります。CommonEntity のマッピングも追加しようとしましたが、違いはありませんでした。

また、クラスの代わりにサブクラスを呼び出してみました。User を Entity から直接継承すると、すべて正常に動作します。何か助けはありますか?

0 投票する
1 に答える
670 参照

nhibernate - nHibernate ByCodeマッピング-慣例によりManyToManyを完全にマッピングする方法は?

私はこのマッピングを定義しました:

私は多対多の関係に問題を抱えています。User、UserPermission、およびPermissionがあります。パーミッションをアタッチした後でユーザーを保存すると、次のSQLが生成されます。

次のようになります。

ユーザーに特定のクラスマッピングを追加すると、次のようになります。

キーとテーブルの定義を省略して、列を呼び出さずに多対多を含めることができ、機能します。しかし、それは私のBeforeManyToManyイベントハンドラーと同じことをします。クラス全体を削除すると、BeforeMapManyToManyイベントは発生せず、nHibernateはPermissionテーブルにUserIdがあると見なします。

Heresユーザー:

0 投票する
1 に答える
280 参照

nhibernate - ConventionModelMapperはセット/バッグの関係をどのように決定しますか

新しいアプリケーションでコードによるマッピングを使用していますが、従来のモデルマッパーで奇妙な動作が見られます。私の1..N関係の1つを除いてすべてをバッグとして選択し、1つをセットとして選択しています。私が見る限り、それらはすべて基本的に同じ方法で宣言されています。さらに、BeforeMapSetのイベントハンドラーを設定しないと、適切なBeforeMapManyToOneハンドラーが起動されません。

0 投票する
1 に答える
841 参照

c# - NHibernate Schema Export が間違ったテーブルを変更する (NH のバグの可能性?)

NHibernates スキーマ エクスポート機能を使用して、データベースを作成および更新します。

ただし、ときどき (低速のマシンでより頻繁に発生するようです) NHibernate は誤ったテーブル変更スクリプトを生成します。スキーマのエクスポートを無効にし、ステートメントをログに記録して問題をデバッグしました。

この問題はランダムに発生し、ランダムに異なるテーブルに影響します。

スクリプトの例は次のとおりです。alter table dbo.VlogNet_NumberGroups add DKS_P03_Artikelgruppe BIGINT

ただし、「DKS_P03_Artikelgruppe」列は完全に異なるマッピングに属しており、さらに悪いことに、このマッピングは に構成されていますNHibernate.Mapping.ByCode.SchemaAction.None

編集: 私の質問を明確にするために: NHibernate が異なるマッピングをランダムに混同し、データベースを破壊するテーブル コマンドを変更するのはなぜですか。

マッピング:

HierachicalEntityMap<T>から派生しClassMapping<T>、いくつかのプロパティ (ID、名前、親) を追加し、TableName を対応するプロパティの値に設定するだけです。

フィールドは、次のDKS_P03_Artikelgruppeマッピングに由来します。

NHibernate SessionFactory をセットアップするコード:

0 投票する
1 に答える
758 参照

oracle - NHibernateのコードによるマッピングがOracleで大文字と小文字を区別するテーブル名を無視するのはなぜですか?

NHibernate3.3.2.4000でOracleデータベースを使用しています。

テーブルからエンティティコレクションを選択できることを確認するために単体テストを設定しています。外観は次のとおりです。

OAuthMembershipsコレクションをフェッチする行は、次の例外をスローしています。

クエリを実行出来ませんでした

[bckgrd_booklet_app.OAuthMembershipoauthmembe0_からid13_としてoauthmembe0_.idを選択します]

[SQL:bckgrd_booklet_app.OAuthMembershipoauthmembe0_からid13_としてoauthmembe0_.idを選択します]

私のOAuthMembershipクラスとマッピングは以下のとおりです。ご覧のとおり、テーブル名を「OAUTH_MEMBERSHIP」として定義していますが、生成されたSQLには、代わりにキャメルケースのクラス名が含まれています。テーブル名の規則が定義されていません。NHibernateがOracleで大文字と小文字を区別するテーブル名を無視するのはなぜですか?


これが私のNHibernateSessionFactoryです。

私のActiveSessionManager:

UnitOfWork定義の関連部分:

0 投票する
1 に答える
759 参照

nhibernate - コードによるマッピングに変換すると、重大なパフォーマンスの問題が発生する

マッピング構成ファイルを使用する NHibernate プロジェクトがあります。SQL Server データベースを使用しています。

コードによるマッピングに切り替えたい。私のアプローチは、一度に 1 つのクラスを実行し、切り替えごとにすべてのテストに合格することを確認することです。

2 つのマッピングを混在させるのは非常に簡単です。

しかし、Scheduleマッピングをコードごとのマッピングに変更したとき、重大なパフォーマンスの問題が発生しました。の呼び出しにSession.Flushは 12 秒かかりますが、これはごくわずかな量のテスト データを超えています。

XML マッピングに戻すと、パフォーマンスの問題はなくなりました。

他の誰かが問題を経験しましたか?

schedule明らかな欠陥がある場合に備えて、の前後のマッピングを含めます。

構成ファイル経由:

コードによるマッピング:


後で編集

Flushトランザクション内で呼び出さないことで問題を解決しました。

問題を再現するために、より単純なテスト コードを作成しようとしましたが、うまくいきませんでした (Flush を何度呼び出しても、すべてのテスト コードは非常に高速に実行されます)。これは、一部のエンティティのキ​​ー生成を から に変換したことが原因である可能性がありIdentityますHiLo

私の場合、私のコードは問題を引き起こした特定の構成を作成していたようです。

推測すると、問題を引き起こす構成には、実行時間の長いトランザクションの軽率な使用と ID キーの生成の組み合わせが含まれていると言えます。