NHibernate заполняет свойство, однако атрибут остается нулевым - PullRequest
1 голос
/ 22 августа 2011

Я пытаюсь установить для fetchmode значение свойства, которое имеет два уровня в моем графе объектов.

DetachedCriteria homeSupportServicesPlacementInvoiceQuery = DetachedCriteria.For<HomeSupportServicesPlacementInvoice>()
            .SetFetchMode("VendorService", FetchMode.Eager)
            .SetFetchMode("VendorService.Vendor", FetchMode.Eager);

NHibernate правильно заполняет значения моего объекта VendorService, однако после того, как объектПереместившись на бизнес-уровень и больше не присоединяясь к сеансу, свойство Vendor больше не гидратируется.Единственная другая странность, которую я заметил в этом процессе, заключается в том, что в окне быстрого просмотра при отладке атрибута для VendorService задано значение NULL, а свойство установлено с правильными значениями.

Что я делаю не так?

Для тех, кто следит за вопросом, очевидно, вы можете установить fetchmode для свойства, которого нет в отображении, и оно будет заполнено (и вы можете увидеть его в отладке).) но значения исчезают при отсоединении объекта от сеанса.

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Это нормально, что поля прокси не инициализируются. Прокси-сервер наследует поля, но не использует их. Это только оболочка, которая делегирует все вызовы реальному объекту (также получателям и установщикам свойства). Реальный объект - это другой экземпляр, без прокси, который агрегируется прокси. Поля реального объекта должны быть правильно инициализированы.

Я не знаю, почему вы теряете данные после сериализации. Скорее всего, это проблема сериализации, а не (очень) специфичная для NH.

1 голос
/ 24 августа 2011

Исходя из предоставленной вами информации, я уверен, что отображение неверно для VendorService.Я бы дважды проверил, что свойство Vendor отображается правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...