Используйте свободный nhibernate для извлечения родительского объекта - PullRequest
0 голосов
/ 27 июля 2011

У меня есть сопоставление один ко многим.Когда я пытаюсь получить родительский объект, дочерний объект также появляется, даже если я прекращаю ленивую загрузку в отображении.Я хочу получить только родительский объект, а не дочерние. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Вы явно запускаете ленивую загрузку, когда отлаживаете свой код.

Если вы не уверены, что это значит, пожалуйста, постарайтесь понять это: -

  1. Вы поставилиточка останова в вашем коде
  2. Вы получаете родительский элемент
  3. Visual Studio достигает точки останова
  4. Вы посмотрите, были ли загружены дочерние элементы
  5. ВизуальныйСтудийный отладчик идет и забирает детей для вас <- это то, что вызывает вашу ленивую загрузку.Наблюдая за этим в VS, вы форсируете ленивую загрузку. </li>

Если вы все еще не уверены, пожалуйста, либо добавьте профилировщик SQL, используйте ведение журнала через log4net или даже загрузите NHProf (бесплатно в течение 30 дней) и посмотрите сгенерированный sql с, а затем без точки останова, и вы увидите различия.

HTH

0 голосов
/ 27 июля 2011

зачем вы получаете доступ к childs, если они вам не нужны? Ленивые коллекции не инициализируются, когда вы не получаете к ним доступ. Может быть что-то вроде этого в событии постзагрузки:

var pc = Parent.Childs as IPersistentCollection;
if (pc != null && !pc.WasInitialized)
    Parent.Childs = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...