Мы используем NHibernate 3.2 с плавными сопоставлениями. Ниже приведено простое сопоставление 1 к Многим в масштабируемой системе с высокой степенью масштабирования
public class Root
{
public Root()
{
Childs = new List<Child>();
}
public virtual int ID { get; set; }
public virtual IList<Child> Childs { get; set; }
public virtual int LastChildID { get; set; }
public virtual int CurrentChildID { get; set; }
}
public class Child
{
public virtual int ID { get; set; }
public virtual Root Root { get; set; }
public virtual string Name { get; set; }
}
Когда мы загружаем это из репозитория почти во всех случаях, нас интересует только текущий дочерний элемент, как определено CurrentChildID, и мы хотим прочитать это одним попаданием из базы данных вместе с корнем, но без других дочерних записей. Если нас затем интересуют оставшиеся дочерние элементы, нам нужно только загрузить записи между LastChildID и CurrentChildID - причина этого в том, что у нас могут быть сотни дочерних элементов для корня, и все до того, как LastChildID будет помечен для архивирования / обработки данных, который обрабатывается отдельно.
Как настроить предварительную выборку в NHibernate. Мы просто не можем найти пример.