Я использую NHibernate Search для NHibernate 3.0 GA.
У меня есть этот код в моем репозитории продукта:
public IList<Product> Find(string term)
{
var productFields = new[] { "Name", "Description" };
var importance = new Dictionary<String, float>(2) { { "Name", 4 }, { "Description", 1 } };
var analyzer = new StandardAnalyzer();
var parser = new MultiFieldQueryParser(
productFields,
analyzer,
importance);
var query = parser.Parse(term);
var session = Search.CreateFullTextSession(NHibernateSession.Current);
var tx = session.BeginTransaction();
var fullTextQuery = session.CreateFullTextQuery(query);
fullTextQuery.SetFirstResult(0).SetMaxResults(20);
var results = fullTextQuery.List<Product>();
tx.Commit();
return results;
}
В NH Profiler я вижу, что для каждого найденного продукта выдается оператор выбора. Чего мне не хватает?
Я нашел эту тему с 2009 года, но, вероятно, эта ошибка была исправлена.
РЕДАКТИРОВАТЬ [06/06/2011]:
Мое сопоставление свойств в отношении ассоциаций выглядит следующим образом:
mapping.HasManyToMany(c => c.Categories)
.Table("CatalogHierarchy")
.ParentKeyColumn("child_oid")
.ChildKeyColumn("oid")
.Cascade.None()
.Inverse()
.LazyLoad()
.AsSet();
mapping.HasMany(c => c.Variants)
.Table("CatalogProducts")
.Where("i_ClassType=2")
.KeyColumn("ParentOID")
.Cascade.SaveUpdate()
.AsSet();
Я не очень хочу получать все категории.