誰かがこれを手伝ってくれることを本当に望んでいます.1日半の間、さまざまな組み合わせを試してきました....
基本的に、単一のテーブルにいくつかの階層データが格納されています。通常のparentIDは行IDシナリオにマップされます。特定のアイテムの祖先のリストを返すドメイン オブジェクト内のプロパティをモデル化しました。ログを見ると、すべてが機能しているようです(つまり、正しい行を取得してハイドレートします:
CollectionLoadContext - 4 collections were found in result set for role: Domain.Keyword.Ancestors
CollectionLoadContext - 4 collections initialized for role: Domain.Keyword.Ancestors
ただし、コレクションに実際にデータが入力されることはなく、私のコードをステップ実行すると、Ilist には本来あるべきものが含まれていません - 単一のインスタンス (現在のレコードと同じ) しか含まれていません!?? 返された列をマップできないというエラーはログに記録されていませんが、正しく入力されていないように見えるだけですか? 明らかな何かが欠けていると確信しています-しかし、それを見ることはできません....
マッピングにこのようなコレクション宣言があります
<bag name="Ancestors" inverse="true"cascade="none" lazy="true" fetch="select" generic="true" >
<key column="KeywordID"/>
<one-to-many class="Domain.Keyword, BS.Core" />
<loader query-ref="CustomAncestorLoader" />
</bag>
...そして、指定されたキーワードのキーワード祖先のリストを返す、query という名前のカスタム ローダー:
<sql-query name="CustomAncestorLoader">
<load-collection alias="Ancestors" role="Domain.Keyword.Ancestors"/>
SELECT s.KeywordID, s.kwdhier, s.Keyword, s.Notes, s.position , s.ParentKeywordId
From dbo.utKeywordBranch(:ParentID) k join Keywords s on k.KeywordId = s.[KeywordID] </sql-query>
私はすでにこれに長い間費やしてきたので、髪を引き裂くところにいるので、どんな助けも大歓迎です!!