1

私は次のような状況で立ち往生しています。私にはContactAssociationというエンティティがあり、(とりわけ)ClientプロパティとContactプロパティがあります。いくつかの条件を満たすクライアントのすべての連絡先を取得する必要があります。条件は次のとおりです。各クライアントにはBusinessEntityのコレクションであるプロパティBusinessEntitiesがあり、各BusinessEntityにはBusinessLevelがあります。これはコードです、私はこれをより理解しやすくするだろうと確信しています:

link.Session.QueryOver<ContactAssociation>(() => ca)
                                       //.Fetch(asoc => asoc.Client)
                                       .JoinAlias(() => ca.Client, ()=> client)

.Left.JoinQueryOver<BuEntry>(() => client.BuEntries, () => be)
                                       .Where(() => client.ID == clientKey)
                                       .Where(() =>    be.BuLevel.LevelNo > buLevel);

さて、私はこのようなことを書きました、そして私はプロパティBuLevel.LevelNoが見つからないというエラーを受け取り続けますしかしそれはモデルにあります

基準を試しましたが、同じエラーが表示されたのは、Visual StudioではなくNHProfilerでのみであり、VisualStudioではさらに不可解なエラーが発生しました。とにかく...私は最終的にSQLクエリの問題を解決しましたが、適切な結果を得るには、QueryOverやCriteriaをどのように記述すればよいですか?

前もって感謝します

PS

これが私のSQLクエリです:

 careTeamMembers = link.Session.CreateSQLQuery(@"select c.* from ContactAssociation ca
                                inner join Contact c
                                on ca.contactkey = c.contactkey
                                left join ContactBu cb
                                on cb.contactkey = c.contactkey
                                left join BuEntry be
                                on cb.entrykey = be.entrykey
                                left join BuLevel bl
                                on be.levelkey = bl.levelkey
                                where ca.clientkey = :clientkey
                                and bl.levelno > :level")
            .AddEntity(typeof(Contact))
            .SetInt32("clientkey", clientKey)
            .SetInt32("level", buLevel)
            .SetMaxResults(1000)
            .List<Contact>();
4

1 に答える 1

0

BULevelへの参加がありません

link.Session.QueryOver<ContactAssociation>(() => ca)
                                       //.Fetch(asoc => asoc.Client)
                                       .JoinAlias(() => ca.Client, ()=> client)

.Left.JoinQueryOver<BuEntry>(() => client.BuEntries, () => be)
                                       .Where(() => client.ID == clientKey)
                                       .JoinQueryOver<BuLevel>(() => be.BuLevel)
                                       .Where(bu => bu.LevelNo > buLevel);
于 2011-05-05T14:31:22.453 に答える