問題タブ [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.
nhibernate - 関連付けられたテーブルにnullレコードがある場合にのみ、Count=NのこのSqlParameterCollectionの無効なインデックスN
特定のデータベーステーブルにレコードがない場合に保存されない、かなり複雑なエンティティがあります。レコードが存在する場合、エンティティは正しく保存します。レコードが受信されない場合、例外が発生します。
Count=NのこのSqlParameterCollectionの無効なインデックスN
Googleで見つかった一連のソリューションと、Stack Overflowで最も密接に関連する質問を読んだ後:
- データベースの列がNullの場合、「Count=nnのこのSqlParameterCollectionのインデックスnnが無効」の原因は何ですか。
- Count=nのこのSqlParameterCollectionの無効なインデックスn」または「外部キーをnullにすることはできません
私の問題は、マッピングファイルの設定方法に関係していると思います。CustomerエンティティはPersonエンティティへの参照を持っています。Personは、読み取りは行ったが書き込みアクセスはできなかったテーブルにマップします。例外を生成するのは、Personエンティティのレコードが存在しない場合です。レコードが存在する場合は問題ありません。顧客からの人への参照をに設定しましたNullable()
。また、どちらのエンティティからもプロパティが2回マップされていないことを確認するためにダブルチェックしました。
これが適切なマッピング情報であると私が感じるものですが、必要に応じてより多くを提供することができます:
お客様
人
さらに複雑なことに、Personが存在しない場合にNHibernateのパフォーマンスを向上させるための面倒なコードがいくつかあります。ここに当てはまるかどうかはわかりませんが、私の質問に含めるのに十分適切だと思いました。以下のコードを使用しているのは、それがないとNHibernateJIRAが大量のクエリを作成するためです。このソリューションは、このStackOverflowの回答で概説されています。
お客様の所有物
この例外の原因となるマッピングに何が欠けていますか?私が見ていないこの問題の別の部分はありますか?
nhibernate - AnsiStringとして格納されている列挙型プロパティを取得しようとしたときに「PropertyAccessException:InvalidCast」
列挙型をnvarcharではなくvarcharとしてデータベースに保存する必要があるため、次のように「AnsiString」マッピングを使用しています。
データベースへの保存は正常に機能しますが、取得に関しては、次のエラーが発生します 。NHibernate.PropertyAccessException:無効なキャスト(プロパティタイプの不一致についてマッピングを確認してください)。Core.Documentのセッター
マッピングからCustomType( "AnsiString")を削除すると、正常に機能します。
助言がありますか?
これがhbmです:
fluent-nhibernate - NHibernate例外:コレクションを初期化できませんでした。列名が無効です。流暢なマッピング。多分多対多の問題?
NHibernateを介して取得している例外に戸惑い、イライラしています。この投稿の長さについてお詫び申し上げますが、問題を十分に説明するために適切なレベルの詳細を含めて、助けを得るようにしました。
事実は次のとおりです。
- 型でもあるプロパティを
Person
含むクラスがあります。これをFNHの「リファレンス」としてマッピングします。BillingManager
Person
- タイプである
ExpenseReport
プロパティを含むクラスがあります。これをFNHの「リファレンス」としてマッピングします。SubmittedBy
Person
- タイプであるプロパティを
BillableTime
含むクラスがあります。これをFNHの「リファレンス」としてマッピングします。Person
Person
Person
ExpenseReport
タイプ(プロパティExpenseReports
)のコレクション(IList)が含まれていますPerson
BilledTime
タイプ(プロパティ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
です。
ここで何が起こっているのか分かりますか?私は途方に暮れています...
ありがとう。
===クラスとマッピング===
nhibernate - クラスごとのNHibernateテーブルのロード - 間違ったタイプ
Fluent/NHibernate の table-per-class 階層にマッピングの問題があります。データベースからレコードを取得すると、エラーが発生し続けます (間違った型の例外)。
ID 2445763 のオブジェクトは、指定されたサブクラス ClassA ではありませんでした (読み込みオブジェクトは間違ったクラス [ClassB] でした) (レコード 2445763 の [タイプ] 列の値は「2」です)
私のドメインには、EntryBase、ClassA、および ClassB があります。クラスは次のように定義されます。
マッピングは次のとおりです。
何が間違っているのでしょうか?クラス B のレコードを正しく格納できましたが、それらを取得すると、クラス A としてロードしようとしています。マッピングの問題ですか?
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.QueryOver
1.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
教えてください
nhibernate - 複合キーと継承
私は次のクラスとマッピングを持っています
挿入、更新、および session.Get() は正常に動作しますが、クエリは次のようになります
スロー
NH が抽象基本クラスを複合キーとしてインスタンス化しようとして失敗したようです。何とかそれを回避できますか?
更新: 私のテストコード
nhibernate - Fluent NHibernate : 規約 / KeyColumn
コードの下で、Customer は複数の住所を持つことができます。一対多の関係があります。「Customer_id」ではなく「Customer」という名前のフィールドを FK として Address テーブルに入れたい
追加しようとしました:
.KeyColumn("Customer")
>変更なし
私はForeignKeyConventionを変更せずに使用しようとしました。
何か案が ?
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 があります。私が見逃している構文の変更があったと仮定しています。ありとあらゆる助けをいただければ幸いです。
ありがとうございました!ジョン
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」を取得できますか?
c# - Count=1 のこの SqlParameterCollection の無効なインデックス 1
私が気付いたのは、参照している Ncv の Report フィールドが生成されていないことです。以下は私が受け取っているエラーです。
これが私のドメインの外観です。受信したエラーは、この SqlParameterCollection のカウント = 1 に対して無効なインデックス 1 です。