2009-07-27 1 views
0

私はNHibernateはを使用してクエリを作成しようと、複数の外部キーに沿って探しています:NHibernateのSession.Criteriaを複数の外部キーで使用する方法?

私は唯一の外部キーのいずれかで検索していたときに、次のコードは動作します:

  ICriteria query = Session.CreateCriteria<TblTeam>() 
      .Add<TblTeam>(x => x.FldUrlSafeName == teamName) 
      .CreateCriteria<TblTeam>(x => x.TblSportsType) 
      .Add<TblSportsType>(x => x.FldUrlSafeName == sportsType); 


     return query.UniqueResult<TblTeam>(); 

私がする必要があります

  ICriteria query = Session.CreateCriteria<TblTeam>() 
      .Add<TblTeam>(x => x.FldUrlSafeName == teamName) 
      .CreateCriteria<TblTeam>(x => x.TblSportsType) 
      .Add<TblSportsType>(x => x.FldUrlSafeName == sportsType) 
      .CreateCriteria<TblTeam>(x => x.TblSportsOrganization) 
      .Add<TblSportsOrganization>(x => x.FldUrlSafeName == sportsOrganization); 

     return query.UniqueResult<TblTeam>(); 

残念ながら、これは私に次のエラー得られます:

をので、私は次のように作成した外部キ​​ーの2の検索10

"プロパティを解決できませんでした:TblSportsOrganization of:site.Core.TblSportsType"

TblTeamではなくTblSportsTypeに条件を追加するにはどうすれば "ステップバック"を取ることができますか?

答えて

1

IRCの一部の人と話をしたところ、私は答えを見つけました。あなたは元のICriteriaへの参照を保持する必要があります。それは明らかだったはずです。

  ICriteria query = Session.CreateCriteria<TblTeam>(); 
     query.Add<TblTeam>(x => x.FldUrlSafeName == teamName); 

     query.CreateCriteria<TblTeam>(x => x.TblSportsType) 
      .Add<TblSportsType>(x => x.FldUrlSafeName == sportsType); 

     query.CreateCriteria<TblTeam>(x => x.TblSportsOrganization) 
      .Add<TblSportsOrganization>(x => x.FldUrlSafeName == sportsOrganization); 

     return query.UniqueResult<TblTeam>(); 
関連する問題