2015-02-12 2 views
0

Я смотрю на вороном дб в первый раз и Ive заметил, есть некоторые довольно мощные возможности запросов, и тем более при использовании в сочетании с Lucene.Netзапросов по нескольким типам с использованием RavenDb

как в следующем примере где вы можете использовать подстановочные знаки.

BlogPost[] prefixedResultsWithMatch = session.Advanced 
.LoadStartingWith<BlogPost>("blogposts/1", "*/Author/*t"); 

Одна вещь, которую я хотел бы иметь, - это запрос по нескольким типам объектов.

Например, если у меня были типы «Клиент» и «Бизнес» с именем «Имя», я хочу иметь возможность получать ВСЕ «Клиенты» и «Предприятия» за один вызов (даже если они не являются "Связанный").

Возможно ли это с RavenDb и Lucene?

ответ

2

Не уверен, Lucene, но вы можете делать то, что вы просите с индексом Multimap:

public class CustomerAndBusiness_ByName : AbstractMultiMapIndexCreationTask<CustomerBusiness> 
{ 
    public CustomerAndBusiness_ByName() 
    { 
     AddMap<Business>(businesses => from business in businesses 
             select new 
             { 
              business.Id, 
              business.Name 
             }); 

     AddMap<Customer>(customers => from customer in customers 
             select new 
             { 
              customer.Id, 
              customer.Name 
             }); 

     Index(x => x.Name, FieldIndexing.Analyzed); 
    } 
} 

А затем запросить его так:

using (var session = documentStore.OpenSession()) 
{ 
    var results = session.Query<CustomerBusiness, CustomerAndBusiness_ByName>() 
          .Where(x => x.Name == "Name") 
          .ProjectFromIndexFieldsInto<CustomerBusiness>() 
          .ToList(); 
} 

Это, конечно, только возвращающие представление предприятий и клиентов (называемых CustomerBusiness), а не самих объектов, отслеживаемых единицей работы.

Подробнее об этом в блоге Ayende в:

http://ayende.com/blog/89089/ravendb-multi-maps-reduce-indexes

Надеется, что это помогает!

+0

Конечно, я нашел это в документации тоже .... http: //ravendb.net/docs/article-page/2.5/csharp/client-api/querying/polymorphism – shenku

Смежные вопросы