nhibernate - отключите загрузку automatic\lazy дочерних записей для одной ко многим relationsihps

Вот пример. У меня есть матрица 3x3 с именем «a», и я хочу выбрать верхнюю левую матрицу 2x2 с именем «c».

>>> import numpy as np # importing numpy
>>> a=np.matrix('1 2 3;4 5 6;7 8 9') # creating an example matrix, named a
>>> a
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
>>> b=[[a.item(0,0),a.item(0,1)],[a.item(1,0),a.item(1,1)]] # creating a list, with 1,1 1,2 2,1 and 2,2 indices of a. remember, in math indexing starts from 1 but in most programming languages, it starts from 0
>>> b
[[1, 2], [4, 5]]
>>> c=np.matrix(b) # creating an numpy matrix object from b which is a part of a
>>> c
matrix([[1, 2],
        [4, 5]])
9
задан Ray Vega 10 August 2009 в 13:14
поделиться

2 ответа

Учитывая Ваш запрос, Вы не могли просто отобразиться от Отдела до Сотрудников, ни иметь свойство Employees на своем отделе. Это означало бы, что всегда необходимо делать хит базы данных для нахождения сотрудников базы данных.

Aplogies, если эти примеры кода не работают из поля, я не около компилятора в данный момент

Так, Ваш класс отдела мог бы быть похожим:

 public class Department 
 { 
     public int Id { get; protected set; }
     public string Name { get; set; }
     /* Equality and GetHashCode here */
 }

и Ваш Сотрудник был бы похож:

 public class Employee
 { 
     public int Id { get; protected set; }
     public Name Name { get; set; }
     public Department Department { get; set; }
     /* Equality and GetHashCode here */
 }

Любое время Вы хотели найти Сотрудников для отдела, Вы имеете, должны звонить:

/*...*/
session.CreateCriteria(typeof(Employee))
    .Add(Restrictions.Eq("Department", department)
    .List<Employee>();

Просто, потому что Ваша спецификация говорит, что "Отделы имеют многих Сотрудников", не означает, что необходимо отобразить ее как двунаправленная ассоциация. Если можно сохранить связанное однонаправленное, можно действительно заставить доступ к данным лететь также.

Google "Доменный Управляемый Дизайн" Агрегат, или видят Страницу 125 книги Eric Evan по Доменному Управляемому Дизайну для получения дополнительной информации

3
ответ дан 3 November 2019 в 08:56
поделиться

У Вас может быть ленивый атрибут на наборе. В Вашем примере Отдел имеет n сотрудников, если ленивый включен, сотрудники не будут загружены по умолчанию, когда Вы загрузите отдел: http://www.nhforge.org/doc/nh/en/#collections-lazy

У Вас могут быть запросы, которые явно загружают отдел И сотрудников вместе. Это - опция "выборки": http://www.nhforge.org/doc/nh/en/#performance-fetching-lazy

-1
ответ дан 3 November 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: