問題タブ [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 投票する
2 に答える
2238 参照

nhibernate - 関連付けられたテーブルにnullレコードがある場合にのみ、Count=NのこのSqlParameterCollectionの無効なインデックスN

特定のデータベーステーブルにレコードがない場合に保存されない、かなり複雑なエンティティがあります。レコードが存在する場合、エンティティは正しく保存します。レコードが受信されない場合、例外が発生します。

Count=NのこのSqlParameterCollectionの無効なインデックスN

Googleで見つかった一連のソリューションと、Stack Overflowで最も密接に関連する質問を読んだ後:

私の問題は、マッピングファイルの設定方法に関係していると思います。CustomerエンティティはPersonエンティティへの参照を持っています。Personは、読み取りは行ったが書き込みアクセスはできなかったテーブルにマップします。例外を生成するのは、Personエンティティのレコードが存在しない場合です。レコードが存在する場合は問題ありません。顧客からの人への参照をに設定しましたNullable()。また、どちらのエンティティからもプロパティが2回マップされていないことを確認するためにダブルチェックしました。

これが適切なマッピング情報であると私が感じるものですが、必要に応じてより多くを提供することができます:

お客様

さらに複雑なことに、Personが存在しない場合にNHibernateのパフォーマンスを向上させるための面倒なコードがいくつかあります。ここに当てはまるかどうかはわかりませんが、私の質問に含めるのに十分適切だと思いました。以下のコードを使用しているのは、それがないとNHibernateJIRAが大量のクエリを作成するためです。このソリューションは、このStackOverflowの回答で概説されています。

お客様の所有物

この例外の原因となるマッピングに何が欠けていますか?私が見ていないこの問題の別の部分はありますか?

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

nhibernate - AnsiStringとして格納されている列挙型プロパティを取得しようとしたときに「PropertyAccessException:InvalidCast」

列挙型をnvarcharではなくvarcharとしてデータベースに保存する必要があるため、次のように「AnsiString」マッピングを使用しています。

データベースへの保存は正常に機能しますが、取得に関しては、次のエラーが発生します 。NHibernate.PropertyAccessException:無効なキャスト(プロパティタイプの不一致についてマッピングを確認してください)。Core.Documentのセッター

マッピングからCustomType( "AnsiString")を削除すると、正常に機能します。

助言がありますか?

これがhbmです:

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

fluent-nhibernate - NHibernate例外:コレクションを初期化できませんでした。列名が無効です。流暢なマッピング。多分多対多の問題?

NHibernateを介して取得している例外に戸惑い、イライラしています。この投稿の長さについてお詫び申し上げますが、問題を十分に説明するために適切なレベルの詳細を含めて、助けを得るようにしました。

事実は次のとおりです。

  • 型でもあるプロパティをPerson含むクラスがあります。これをFNHの「リファレンス」としてマッピングします。BillingManagerPerson
  • タイプであるExpenseReportプロパティを含むクラスがあります。これをFNHの「リファレンス」としてマッピングします。SubmittedByPerson
  • タイプであるプロパティをBillableTime含むクラスがあります。これをFNHの「リファレンス」としてマッピングします。PersonPerson
  • PersonExpenseReportタイプ(プロパティExpenseReports)のコレクション(IList)が含まれています
  • PersonBilledTimeタイプ(プロパティTime)のコレクション(IList)が含まれています

(投稿の下部にあるクラスとマッピングを参照してください。)

IList<BilledTime> Timeコレクションをに追加するまでは、すべてがクールでしたPerson。ここで、にアクセスしようとすると_person.Time、例外が発生します。

コード:

例外:

確かに、これは無効な列名であり、テーブルBillingManager_idには存在しません。BillableTimeただし、NHBがこのSQLを作成した理由がわかりません...私には意味がありません。解決策を検索するときに、この「無効な列名」の例外をよく目にしましたが、何も機能していないようです。さらに紛らわしい:のようBilledTimeに、ExpenseReportタイプにはへの参照も含まれており、Person完全に機能します。

私が理解できたのは、Personマッピング(References(p => p.BillingManager))からBillingManager参照を削除すると、例外がなくなり、動作しているように見えることです(BillableTimeに関しては、もちろんBillingManagerの永続性が失われます)。Person.BillingManagerプロパティ自体がへの参照であるため、「自己参照」の問題があるようPersonです。

ここで何が起こっているのか分かりますか?私は途方に暮れています...

ありがとう。

===クラスとマッピング===

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

nhibernate - クラスごとのNHibernateテーブルのロード - 間違ったタイプ

Fluent/NHibernate の table-per-class 階層にマッピングの問題があります。データベースからレコードを取得すると、エラーが発生し続けます (間違った型の例外)。

ID 2445763 のオブジェクトは、指定されたサブクラス ClassA ではありませんでした (読み込みオブジェクトは間違ったクラス [ClassB] でした) (レコード 2445763 の [タイプ] 列の値は「2」です)

私のドメインには、EntryBase、ClassA、および ClassB があります。クラスは次のように定義されます。

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

何が間違っているのでしょうか?クラス B のレコードを正しく格納できましたが、それらを取得すると、クラス A としてロードしようとしています。マッピングの問題ですか?

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

nhibernate - 2つのテーブルをqueryoverで結合する

サンプルに3つのテーブルがあります。私は2つのテーブルに参加するつもりですが、次の問題があります:私のコード:

私のエラー:

NHibernate.Exceptions.GenericADOException:クエリを実行できませんでした[SELECT this_.ID as ID1_1_、this_.name as name1_1_、this_.lastname as lastname1_1_、tblterm1_.ID as ID2_0_、tblterm1_.LessonID as LessonID2_0_、tblterm1_.StudentID as StudentID2_0_内部結合TblTermtblterm1_on this_.ID = tblterm1_.TblStudent_id] [SQL:SELECT this_.ID as ID1_1_、this_.name as name1_1_、this_.lastname as lastname1_1_、tblterm1_.ID as ID2_0_、tblterm1_.LessonID as LessonID2_0_、 as StudentID2_0_ FROM TblStudent this_ inner join TblTerm tblterm1_ on this_.ID = tblterm1_.TblStudent_id] ---> System.Data.SqlClient.SqlException:無効な列名'TblStudent_id'。System.Data.SqlClient.SqlConnection.OnError(SqlException例外、ブール値breakConnection)でSystem.Data.SqlClient.SqlInternalConnectionで。1 querySpaces, IType[] resultTypes) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Loader.cs:line 1595 at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Criteria\CriteriaLoader.cs:line 74 at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:line 1919 at NHibernate.Impl.CriteriaImpl.List(IList results) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\CriteriaImpl.cs:line 265 at NHibernate.Impl.CriteriaImpl.List[T]() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\CriteriaImpl.cs:line 276 at NHibernate.Impl.CriteriaImpl.Subcriteria.List[T]() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\CriteriaImpl.cs:line 813 at NHibernate.Criterion.QueryOver1.List()in d:\ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Criterion \ QueryOver.cs:line 57 at NHibernate.Criterion.QueryOver`1.NHibernate.IQueryOver.List()in d:\ CSharp \ NH \ NH \ nhibernate \ src \ NHibernate \ Criterion \ QueryOver.cs:line 198 at human.Form1.button_JoinSelect_Click(Object sender、EventArgs e)in E:\ desktop \ Human \ human \ human \ Form1.cs:line 84

教えてください

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

nhibernate - 複合キーと継承

私は次のクラスとマッピングを持っています

挿入、更新、および session.Get() は正常に動作しますが、クエリは次のようになります

スロー

NH が抽象基本クラスを複合キーとしてインスタンス化しようとして失敗したようです。何とかそれを回避できますか?

更新: 私のテストコード

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

nhibernate - Fluent NHibernate : 規約 / KeyColumn

コードの下で、Customer は複数の住所を持つことができます。一対多の関係があります。「Customer_id」ではなく「Customer」という名前のフィールドを FK として Address テーブルに入れたい

追加しようとしました: .KeyColumn("Customer")>変更なし

私はForeignKeyConventionを変更せずに使用しようとしました。

何か案が ?

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

nhibernate - カスタム Fluent NHibernate マップが AutoMapping で機能しない

Fluent NHibernate AutoPersistenceModelGenerator に問題があります。カスタムマップを取得したくありません。

Sharp Architecture 2.0、Fluent NHibernate 1.2、NHibernate 3.1 を使用。

私の現在の関連する構成は次のとおりです。

構成にさまざまな変更を加えて、Fluent NHibernate に関するインターネット記事を流してみましたが、役に立ちませんでした。Sharp Arch 1.x を使用した作業バージョンと、以前のバージョンの NHibernate と Fluent があります。私が見逃している構文の変更があったと仮定しています。ありとあらゆる助けをいただければ幸いです。

ありがとうございました!ジョン

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

c# - Fluentlyにマップされた列名からプロパティ名を取得します

バックグラウンド

「Dog」というクラスがあり、「Size」というプロパティを持つ「Tail」という別のクラスを参照しています。したがって、犬の尻尾のサイズを知りたい場合は、「Dog.Tail.Size」になります。完全。

私はこれをFluentNHibernateでマッピングしました次のように:

質問

列名が「DG_TL_SIZE」の場合、「Dog.Tail.Size」を取得するにはどうすればよいですか?Dog.Tail.Size"persistentClass.GetRecursiveProperty("Dog.Tail.Size")"を取得したら、プロパティを取得して操作できることを知っています。

値を変更する必要があるため、そこからPropertyInfoが必要ですが、「Dog.Tail.Size」がある場合は取得するのは難しくありません。

では、どうすれば「Dog.Tail.Size」を取得できますか?

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

c# - Count=1 のこの SqlParameterCollection の無効なインデックス 1

私が気付いたのは、参照している Ncv の Report フィールドが生成されていないことです。以下は私が受け取っているエラーです。

これが私のドメインの外観です。受信したエラーは、この SqlParameterCollection のカウント = 1 に対して無効なインデックス 1 です。