Сумка NHibernate - настоящие коллекционные предметы вместо прокси - PullRequest
1 голос
/ 22 июля 2010

У меня возникают странные проблемы с 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>

Насколько я понимаю, устанавливая сопоставление "многие ко многим" как lazy = "proxy", NHibernate должен создавать прокси-объект, который отличается от моего типа Market, только с ключом идентификации и ничем другим не установлен это.

Однако при выполнении отладки я действительно вижу, как создаются реальные сущности Рынка и добавляются в пакет Markets, чего не должно быть.

Является ли мое отображение неверным или NHibernate создает реальные объекты, а не собственный отраженный тип в качестве прокси-объекта?

С уважением, Alvaro

Ответы [ 2 ]

3 голосов
/ 22 июля 2010

Ваше понимание верно в том, как NHibernate создает экземпляр прокси и сущностей. При первом обращении к любым свойствам этой прокси-сущности NHibernate загрузит сущность из базы данных.

Вы должны попытаться отслеживать SQL-запросы, создаваемые NHibernates, чтобы видеть, когда эти запросы вызываются, используя что-то вроде NH Profiler или SQL Profiler.

0 голосов
/ 22 июля 2010

После небольшого дальнейшего изучения выясняется, что отображение класса Market имело явное свойство lazy = "false", установленное внутри элемента, переопределяя собственную настройку прокси пакета.

Все отсортировано сейчас!

...