問題タブ [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.

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

nhibernate - FluentnHIbernated-同じテーブル内のHasMany関係

ウェブサイトのトップメニュー構造のモデルを作成しています-

MenuObjectモデルがあります:

およびマッピング:

基本的に、「トップレベル」メニュー項目を作成してから、それにいくつかの子項目を追加できるようにしたいです。データベース用語では、親メニュー項目のIDを含むParentIdフィールドが必要です(存在する場合)。これはnullになる可能性があります。 )。

これをオブジェクトモデルでどのように定義するかについて頭を悩ませています。また、これを構成したら、子供を救うにはどうすればよいですか?それは次のようなものでしょうか

または、子を独立して保存し、親に明示的にリンクする必要がありますか?

編集**** * _ _

ありがとう-だから今私は私のモデルに次のものを持っています:

そしてこれはマッピングで:

これで、次の方法で子を親itmsに追加できます。

私は勝者だと思います!それが最善の方法ですか?THanks gdoron

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

nhibernate - 2つのIntをDateTimeにマッピングする

こんにちは、

データベースに格納されている2つの「int」を日時にマップするUserTypeを作成しようとしました。私の「int」は、データベース内の時刻と日付を、目的の効果を得たいと思った方法で呼び出しました。しかし、エラーが発生しました:指定されたキャストは無効です。

私のコード:

0 投票する
2 に答える
238 参照

asp.net-mvc-3 - FluentHibernateを使用してT4テンプレートからLINQ2SQLクラスを生成する方法

私は以前に答えられなかった同様の質問 をしました、私はT4テンプレートを使用してLINQ2SQLクラスを生成する方法を理解しようとしています。私はシャープなアーキテクチャを使用しています(または使用しようとしています)。出発点が見つかりませんでした。

私が行ったこと:T4テンプレートを使用したコード生成について説明している多くのチュートリアルブログを読みましたが、EntityFrameworkで行われているようにデータベースからエンティティクラスまたはlinq2sqlクラスを生成する方法を見つけることができませんでした。マッピングを手書きする必要がありますか?データベースを使用してクラスが生成されますか、質問があいまいであるか、適切に表現されていない場合はどうなりますか?申し訳ありませんが、現時点でT4とFluentHibernateについてはこれですべてです。

私はどんなガイダンス/助けにも感謝します...

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

nhibernate - Fluent NHibernate XDocumentプロパティをOracle XMLTypeにマッピング

XDocument プロパティ型から Oracle XMLType にマップする最良の方法を探していますか? レガシー データベースにマッピングしていますが、スキーマを制御できません。オラクル9iです。

nHibernate のバージョン 3 は、このタイプのマッピングにすぐに使用できる機能を提供することを読みました。流暢なマッピングでバージョン 3.1 を使用しています。作成時にデフォルトのマップを使用すると、次のエラーが表示されます。

System.ArgumentOutOfRangeException : 指定された引数が有効な値の範囲外でした。Oracle.DataAccess.Client.OracleParameter.set_DbType(DbType 値) で NHibernate.Driver.DriverBase.SetCommandParameters(IDbCommand cmd, SqlType[] sqlTypes) で d:\CSharp\NH\NH\nhibernate\src\NHibernate\Driver\DriverBase .cs: NHibernate.Driver.DriverBase.GenerateCommand(CommandType type, SqlString sqlString, SqlType[] parameterTypes) の 180 行目 d:\CSharp\NH\NH\nhibernate\src\NHibernate\Driver\DriverBase.cs: 136 行目d:\CSharp\NH\NH\nhibernate\src\NHibernate\AdoNet\AbstractBatcher.cs の NHibernate.AdoNet.AbstractBatcher.Generate(CommandType type, SqlString sqlString, SqlType[] parameterTypes): NHibernate.AdoNet.AbstractBatcher の 78 行目。 PrepareBatchCommand(CommandType type, SqlString sql, SqlType[] parameterTypes) in d:

XDocument と文字列の間で変換する独自のユーザー型を記述して、これを回避しました。

これは、文字列の長さが 4000 文字を超えるまで問題なく機能しました。今、私はエラーが発生します:

NHibernate.Exceptions.GenericADOException : 挿入できませんでした: [XmlBlob#95586][SQL: INSERT INTO XMLBLOB (CAT_CODE, BLB_BLOB, BLB_ID) VALUES (?, ?, ?)] ----> Oracle.DataAccess.Client.OracleException : ORA-01461: LONG列に挿入する場合のみLONG値をバインドできます

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

c# - 流暢な NHibernate を使用して読み取り専用の SQL ビューをマップする

主キーまたは複合キーが指定されていない Automap 読み取り専用ビューに Fluent Nhibernate を取得しようとしています。ClassMap の API ドキュメントが Id() のデフォルトのコンストラクターを公開しているため、可能のようです。

http://fluentnhibernate.org/api/FluentNHibernate.Mapping/ClassMap%601.htm

それは言う

IdentityPart Id() ドメイン オブジェクトまたはデータベース内の列に対応するプロパティを持たない Id を作成します。これは主に、読み取り専用アクセスおよび/またはビューで使用するためのものです。デフォルトは、「インクリメント」ジェネレーターを使用した int ID です。

ビューに対応するエンティティのマッピングをオーバーライドしようとしましたが、Id フィールド名を指定する主キー規則を削除しました。idそのような列がないために失敗するビューのクエリに列を追加します。

これを行うためのより良い方法があるはずだと思うので、ビューで偽の主キーを取り除こうとしています。

これが私が使用しているオーバーライドスニペットです

なぜこれが機能しないのですか?

0 投票する
2 に答える
3057 参照

nhibernate - HasManyでオブジェクトを保存するときのNHibernate例外「オブジェクトは保存されていない一時インスタンスを参照しています - フラッシュする前に一時インスタンスを保存してください」

複数の HasMany リレーションシップを持つオブジェクトを保存しようとすると、「オブジェクトは保存されていない一時インスタンスを参照しています - フラッシュする前に一時インスタンスを保存してください」という例外が発生します。

以下は、単純化されたクラス、対応するマッピング、および「アプリケーション」コードです。

「アプリケーション コード」セクションは、私がやりたいことを示しています。経費レポートと作業時間を請求書に追加し、請求書を保存します。

ただし、例外は GetTimeWorked() で発生します。順序を逆にすると (経費報告の前に作業時間を追加する)、GetExpenseReports() でエラーが発生します。

経費報告書を追加した後に請求書を保存し、勤務時間を追加した後に再度保存すると、問題なく動作します。ただし、この保存はトランザクションである必要があります。経費レポートと作業時間は一緒に保存する必要があります。

私はこの例外について多くのことを読みましたが、私が試したことは何もありません。私が読んだ状況は、これとは少し異なるようです。これはマッピングの問題であると推測しており、別のマッピング (HasMany 側で Cascade を使用) を試しましたが、途方に暮れています。

ここで何が起こっているのか、どうすれば解決できますか?

ありがとう!

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

c# - Fluent Nhibernate&SQLiteマッピングコンポーネント

nullの可能性があるエンティティにコンポーネントがあります。これは、InMemoryデータベースを使用した単体テストでは機能しますが、ファイルベースのSQLiteデータベースでは機能しません。コンポーネントが設定されているかどうかを示すためにブールフラグを使用していますが、これはハックのようです。

これはNHibernateまたはSQLiteのバグですか?または私は何かが欠けていますか?

これがビジネス価値を取り除いた私のマッピングです:

メモリデータベースでは、エンティティのすべての列がnullの場合、エンティティのコンポーネントはnullになります。これは私が期待することです。ファイルベースのデータベースを使用する場合、コンポーネントは空です。したがってentity.Component==null、コンポーネントがすでに設定されているかどうかを確認するために使用することはできません。

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

fluent-nhibernate - 流暢な多対多のマッピング方法

OrderとItemsの2つのクラスがあります

このような方法が欲しい

このようなメソッドを作成するために作成するのですか、それともプロパティを作成する必要がありますか

そして、これのマッピングはどのようにnhibernateである必要がありますか?

0 投票する
2 に答える
2005 参照

c# - 主キーと外部キーのない流暢なNHibernate 3テーブルリレーション

背景情報

NHibernate でマップしたい次のクラスがあります。

データベース側には、次のテーブルがあります。

Player の ScreenName には、電子メール アドレス ("foo@bar.com")、Twitter のスクリーン名 ("@FooBar")、Skype のスクリーン名 ("foo.bar")、またはそのようなものを指定できます。Fluent NHibernate を使用して Player の最初の 3 つのプロパティをマッピングするのは簡単です。

しかし、Unsubscribed プロパティは、変更できず、読み取り専用 (挿入、更新、または削除が許可されていない) でアクセスする必要がある 2 つの従来のテーブルからその情報を取得する必要があるため、より困難です。

購読を解除できるのは電子メール Player のみであるため、他のタイプの Player は EmailAddress テーブルにも Unsubscribed テーブルにも行がありません。

レガシー テーブルのクラスは次のとおりです。

Fluent マッピングは次のとおりです。

問題

私が抱えている問題は、電子メール プレーヤーの購読解除された情報を取得しようとしていることです。

Unsubscribed テーブルを Player テーブルに関連付ける唯一の方法は、EmailAddress.EmailAddress を Player.AddressIdentifier に一致させる中間の EmailAddress テーブルを使用することですが、Fluent NHibernate でこれを行う方法がわかりません。

複数のテーブルの Join を見てきましたが、私が見つけたすべての例では、3 つではなく 2 つのテーブルしか扱っていません。

  1. Fluent NHibernate を使用してテーブルに参加する
  2. Fluent Nibernate が結合を残しました
0 投票する
2 に答える
1960 参照

c# - Func からのメンバー アクセス Func のキャスト機能へ

流暢な nhibernate を使用して動的ベース マッピングを作成しようとしています。

私がやっていることは、 BaseMap< T > : ClassMap< T > によるチェックインです。たとえば、 (typeof(ICategorizedEntity).IsAssignableFrom(typeof(T)))

もしそうなら、ICategorizedEntity のインターフェイスに属する「Category」という名前のプロパティをマップしたいのですが、Map(Func) 関数は T のプロパティしか受け付けないので、linq で少し推測してみました。

「Map」関数の奥深くで次のことをチェックするため、これは機能しません。

そして、「メンバー アクセスではありません\r\nパラメーター名: 式」が表示されます。

MemberExpression または同様のものを作成してキャストするにはどうすればよいですか?