Как сделать ленивую загрузку связей
Когда у сущности много связей - это существенно увеличивает время ее загрузки из базы данных, поэтому в целях уменьшения времени загрузки
некоторые связи стоит сделать ленивыми(lazy) - при этом данные(связи) будут подгружаться только при обращении к ним.
Есть сущности Проект(Project) и Участник(Participant), связанные собой отношением многие-ко-многим (many-to-many). Когда в проекте много участников,
его загрузка из БД занимает много времени, поэтому сделаем загрузку "ленивой" (lazy). Далее приведены часть кода класса Project, описывающий связь на уровне C# классов,
и часть nhibernate маппинга project.hbm.xml, где описывается эта связка:
using System;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
namespace NHibernateEx
[Serializable]
public class Project
{
.................................................................................
private ICollection _participants = new List();
public virtual ICollection Participants
{
get { return _participants; }
set { _participants = value; }
}
.................................................................................
}
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="NHibernateEx.Project, NHibernateEx" table="Projects">
........................................................................
<bag name="Participants" table="ProjectsParticipants" lazy="true">
<key column="ProjId"/>
<many-to-many class="NHibernateEx.Participant, NHibernateEx"
column="PersonId"/>
</bag>
</class>
</hibernate-mapping>