У меня есть продукт класса с ценами детской коллекции:
public class Product
{
private ICollection<Price> prices;
protected Product()
{
prices = new List<Price>();
}
}
Отображение NHibernate выглядит следующим образом
<xml version="1.0" encoding="utf-8">
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Product" table="Product">
<id name="id" column="ProductId" access="field">
<generator class="identity"/>
</id>
<bag name="prices" access="field" cascade="all-delete-orphan" lazy="true">
<key column="ProductId"/>
<one-to-many class="Product.Price"/>
</bag>
</class>
Вы видите, что коллекция цен загружена лениво.
Продукты загружаются из базы данных следующим образом:
public ICollection<Product> ListProducts()
{
ISession session = GetCurrentSession();
return session
.CreateCriteria(typeof(Product))
.List<Product>();
}
Функция ссылается на GetCurrentSession (), который имеет следующее содержимое:
protected ISession GetCurrentSession()
{
return sessionProvider.GetCurrentSessionFrom(sessionFactoryConfigName);
}
Когда я загружаю продукты, я ожидаю, что на месте Price-Collections в продуктах находится прокси, потому что цены имеют lazy-loading = true. Но во время отладки с помощью инструмента просмотра Visual Studio я могу просматривать продукты и просматривать коллекцию цен с полным содержимым (цены со всеми их свойствами). Почему это так?