Я испытываю некоторые странные проблемы с NHibernate и использованием объектов прокси в сумке. Мое отображение смотрит что-то подобное:
<?xml version="1.0" encoding="utf-8" ?>
<bag name="Markets" table="ITPUserWatchlistMarkets" cascade="none" lazy="false">
<key column="UserWatchlistId" />
<many-to-many class="Swan.Domain.Markets.Market, Swan.Domain.Markets" column="MarketId" lazy="proxy" />
</bag>
К моему пониманию, путем установки many-many, отображающегося как ленивого = "прокси", NHibernate должен создавать объект прокси, который отличается от моего типа Рынка, только с идентификационными данными вводят его и ничто иное набор на нем.
Однако при пробежке отладки, я могу на самом деле видеть, что реальные объекты Рынка инстанцированы и добавлены к мешку Рынков, которого не должно происходить.
Действительно ли мое отображение является неправильным, или NHibernate создает фактические объекты, а не его собственный отраженный тип как объект прокси?
С уважением, Alvaro
Вы правильно понимаете, как NHibernate создает экземпляр прокси-сервера и сущностей. При первом доступе к каким-либо свойствам этой прокси-сущности NHibernate загрузит сущность из базы данных.
Следует попытаться отслеживать sql-запросы, создаваемые NHibernates, чтобы увидеть, когда эти запросы вызываются с помощью чего-то вроде NH Profiler или SQL Profiler.
При дальнейшем исследовании выяснилось, что в отображении класса Market было явно установлено свойство lazy="false" в элементе, переопределяющее собственные параметры прокси мешка.
Теперь все улажено!