logolabel
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Вход


Опции
К последнему сообщению К первому непрочитанному
SocrAT  
#1 Оставлено : 16 октября 2015 г. 16:47:16(UTC)
SocrAT

Статус: Тролль

Группы: Главный модератор
Зарегистрирован: 07.03.2014(UTC)
Сообщений: 33

Сказал «Спасибо»: 11 раз
Поблагодарили: 6 раз в 6 постах
Добрый день!
Подскажите, пожалуйста, можно ли сделать и каким образом, чтобы определенные ссылочные поля сущности при выборе методом model.EnityName.Select() или model.EnityName.SelectOne() не загружались, и имели значение, например, null?

Поясню пошагово суть своей проблемы:

1. Есть сущность "пользователь". У него есть поле CreatorId.
2. По этому полю есть ссылка "Creator" на сущность пользователя (по сути таблица в бд ссылается сама на себя).
3. Есть сущность "роль". У нее есть поле CreatorId.
4. По этому полю есть ссылка "Creator" на сущность пользователя.
5. У пользователя есть ссылка на роли, чтобы в коде можно было взять сразу все роли пользователя без доп.запросов в БД.

Реальная ситуация:
У пользователя User1 есть создатель - пользователь Administrator.
У пользователя User1 есть роль - Admin.

У пользователя System есть создатель Administrator с ролью Admin.


Я написал веб-сервис, в котором есть метод GetUserById(Guid id), отдающий пользователя по его Id.

Когда я вызываю этот метод, то веб-сервис формирует экземпляр сущности "пользователь", игнорируя свойств Mode = Lazy, установленное для свойства "Creator", а сразу прогружает его из БД, потому что веб-сервис отдает готовый XML.
Соответственно, при попытке достать пользователя User1 - прогружается свойство "Creator" (пользователь Administrator) и тянется также и роль этого "креатора" = Admin.
Притянулась роль, у роли тоже есть "Creator" - Administrator.
Тянется еще раз Administrator, у него есть роль Admin. И так по кругу, пока не выпадет эксепшн (всё это происходит на стороне сервера в методе GetUserById(Guid id), то есть XML еще не прислался ни разу в клиента.

Что я делаю не так? Или подскажите, как отключить загрузку ссылочного свойства "Creator" в конкретном одном методе GetUserById(Guid id)...

Заранее спасибо.

Отредактировано пользователем 16 октября 2015 г. 16:51:41(UTC)  | Причина: Не указана

sst_hp  
#2 Оставлено : 25 октября 2015 г. 18:53:40(UTC)
sst_hp

Статус: Гуру разработки

Медали: Почетный разработчик: Медаль

Группы: Модератор новостей, Модератор ToDo, Зарегистрированные
Зарегистрирован: 07.03.2014(UTC)
Сообщений: 91

Сказал «Спасибо»: 6 раз
Поблагодарили: 15 раз в 14 постах
сериалайзер рекурсивно перебирает все поля сущности данных, порождая каскадные загрузки данных из БД.
для отключения полей данных из сериалазйзера в дизайнер модели данных добавлена возможность указания дополнительных атрибутов для поля данных сущности.
реализовано в версии 7.0.4.13
Fornit some fornus..
thanks 1 пользователь поблагодарил sst_hp за этот пост.
SocrAT оставлено 25.10.2015(UTC)
Пользователи, просматривающие эту тему
Guest
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.

Форум YAF.NET 2.2.3 | YAF.NET © 2003-2024, Yet Another Forum.NET
Страница сгенерирована за 0.906 секунды.