2016-10-31 11 views
0

私はデータベースで検索するためにC#とNhibernateを使用していますが、カンマで区切ってすべての用語を検索する必要があります。foo、bar - fooまたはバー。しかし、それは動作していないNhibernate動的検索をカンマで

var terms = Term.Split(','); 
     terms.Each(term => 
     { 
      query = query.Where(x => x.Code.Contains(term) || 
         x.Title.Contains(term) || 
         x.Subtitle.Contains(term) || 
         x.Type.Code.Contains(term) || 
         x.Themes.Any(t => t.Title.Contains(term)) || 
         x.Indicators.Any(i => i.Title.Contains(term)) || 
         x.Indicators.Any(t => t.Type.Title.Contains(term)) || 
         x.Indicators.Any(i => i.Sources.Any(s => s.Institution.Name.Contains(term))) || 
         x.Indicators.Any(i => i.Sources.Any(s => s.Institution.Acronym.Contains(term))) || 
         x.Indicators.Any(i => i.Sources.Any(s => s.Name.Contains(term))) || 
         x.Indicators.Any(i => i.Sources.Any(s => s.Acronym.Contains(term))) || 
         x.Indicators.Any(i => i.Sources.Any(s => s.Periodicity.Code.Contains(term))) || 
         x.Indicators.Any(i => i.Sources.Any(s => s.Periods.Any(p => p.Date.Day.ToString().Contains(term) || p.Date.Month.ToString().Contains(term) || p.Date.Year.ToString().Contains(term)))) || 
         x.Indicators.Any(i => i.Sources.Any(s => s.GeographicScope.Description.Contains(term))) || 
         x.Indicators.Any(i => i.Sources.Any(s => s.AggregationLevel.Description.Contains(term))) || 
         x.Indicators.Any(i => i.Keywords.Any(k => k.Description.Contains(term))) 
         ); 
     }); 
     return query; 

は、私は以下のコードを使用しています

一部sugestionsは、C?

Thx。

答えて

0

NHibernateはLinqクエリをSQLクエリに書き換えてDBに対して実行する必要があります。あなたのLinqクエリは非常に複雑ですNHibernateはそれを翻訳することができない可能性があります。

エラーメッセージがなければ、正確に何が間違っているのかを推測することは非常に難しいです。