Можно ли стремиться загрузить более двух отношений один-ко-многим в NHibernate? - PullRequest
1 голос
/ 17 марта 2009

С учетом иерархии объектов, например:

class Category
{
    List<SubCategory> SubCategories;
}

class SubCategory
{
    List<Product> Products;
}

class Product
{
}

Можно ли загружать всю иерархию с помощью NHibernate? Я хотел бы выполнить один запрос для загрузки всех категорий с загруженными подкатегориями и продуктами.

1 Ответ

1 голос
/ 17 марта 2009

Да, это возможно ... Однако, вы не думаете, что это будет иметь некоторые последствия для производительности? Возможно, вы извлекаете огромное количество данных.

для этого вам нужно будет использовать метод SetFetchMode из ICriteria, который вы будете использовать для извлечения экземпляров.

Примерно так:

ICriteria crit = session.CreateCriteria (typeof(Category));

crit.SetFetchMode ("SubCategories", FetchMode.Eager);

Или, может быть, с помощью CreateAlias:

ICriteria crit = session.CreateCriteria (typeof(Category));

crit.CreateAlias ("SubCategories", "sc", JoinType.LeftOuterJoin);
crit.CreateAlias ("sc.Products", "p", JoinType.InnerJoin);

возможно, вам придется немного поиграть с возможными типами JoinTypes, в зависимости от вашей ситуации / того, что вы хотите.

...