4

NHibernate を使用して共同クエリを作成しましたが、NHibernate.QueryException:not an association: Id を取得しています。

これはNHibernateライブラリでどのように見えるかです

TicketRequest ticketAlias = null;
        Show showAlias = null;

        IList<TicketRequest> results = UnitOfWork.CurrentSession.QueryOver<TicketRequest>(() => ticketAlias)
                  .JoinAlias(() => ticketAlias.ShowId, () => showAlias.Id)
                  .Where(() => showAlias.ShowDate >=DateTime.Now)
                  .List();

        return results;

単純な共同ステートメントが必要なだけです。これが SQL の場合です。

select * from TicketRequest as a join Show as b
on a.Show_id = b.Id
where ShowDate >=GETDATE()

「not an association:Id」エラーが発生する理由を教えてください。「表示」テーブルに id があります。これは主キーです。

お知らせ下さい。すべてのヘルプは大歓迎です。

4

2 に答える 2

1

結合で多対 1 の関係を指定する必要があります。あなたの場合、それがShowプロパティです。

IList<TicketRequest> results = UnitOfWork.CurrentSession.QueryOver<TicketRequest>(() => ticketAlias)
    .JoinAlias(() => ticketAlias.Show, () => showAlias)
    .Where(() => showAlias.ShowDate >= DateTime.Now)
    .List();

PS: 多対一の関係 ( Show) と外部キー プロパティ ( ShowID) の両方をマップするべきではありません。通常、ORM を使用する場合は、オブジェクトの関係のみを扱います。何かのために本当に必要な場合にのみプレーンIDをマップしますが、それでも読み取り専用としてのみマップしてください。

于 2013-07-08T07:36:45.993 に答える