Позволяет иметь эти объекты:
public class Obj1
{
public string Id { get; set; }
}
public class Obj2
{
public string Id { get; set; }
public string Obj1Id { get; set; }
}
public class Obj3
{
public string Id { get; set; }
public string Obj2Id { get; set; }
}
Я использую, например, так:
var objs3 = session.Query<Obj3>()
.Customize(x => x.Include<Obj3>(o3 => o3.Obj2Id))
.Take(1000)
.ToList();
foreach (var obj3 in objs3)
{
var obj2 = session.Load<Obj2>(obj3.Obj2Id);
//do something with it
}
Мой вопрос, есть ли возможность добавить к запросу что-то вроде .Where (o2 => o2.Obj1Id == "some / Id")?Query ничего не знает об Obj2 на стороне клиента (Linq), но серверная часть работает с ними, потому что это делает только один запрос к БД.
Я пытаюсь посмотреть, как работают индексы и проекции, но безуспешнос некоторыми конструкциями.Возможно, мое мнение искажено из реляционных баз данных, и есть другие решения, которые требуют переопределения моих структур ...
Мое другое решение - добавить Obj1Id в Obj3, но это создаст дубликаты (я могу жить сthis;))
Некоторая дополнительная информация для объектов:
- Obj1 уникален для каждого клиента, поэтому существует около 200 документов
- Obj2: Obj3 - это братья и сестры 1: 1, каждый со своей точкойсвойств просмотра, около 100.000 для каждого клиентаВключая Obj1 внутри Включая Obj2?(это я не буду использовать, это просто вопрос)