Как загрузить список объектов в Entity с помощью Nhibernate Lazy Загрузка - PullRequest
0 голосов
/ 29 октября 2011

У меня есть проект, реализованный NHibernate и использующий Lazy Loading.У меня есть два класса в этом проекте: человек и семья.Отношение между этими двумя понятиями - агрегация, означает, что у Лица есть список Личности.Сопоставление:

  <class name="Person" table="Person_Person" >

    <id name="Id" type="Int64" unsaved-value="0">
      <generator class="native" />
    </id>

    <bag name="Families" inverse="true" table="Person_Family" cascade="delete" >
      <key column="Person_id_fk"/>
      <one-to-many class="Domain.Entities.Family,RCISP.Domain.Entities"/>
    </bag>

  </class>

В этом проекте я получаю человека по идентификатору, затем добавляю семью в поле семьи в Персоне и сохраняю персона.

Person person = SessionInstance.Get<Person>(id);
Family family = new Family();
family.Name = "Ehsan";
person.Families.Add(family);
SessionInstance.Save(person);

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

int i = person.Families.Count; //Provisional For call in lazy loading
person.Families.Add(family);
SessionInstance.Save(person);

Как я могу добавить семью к человеку без прямой загрузки семей человека?

1 Ответ

1 голос
/ 29 октября 2011

Вам необходимо изменить свой каскадный стиль в коллекции Families на all-delete-orphan или all

<bag name="Families" inverse="true" table="Person_Family" cascade="all-delete-orphan" >
      <key column="Person_id_fk"/>
      <one-to-many class="Domain.Entities.Family,RCISP.Domain.Entities"/>
</bag>
...