С Новым годом! Форум программистов, компьютерный форум, киберфорум
Теория и практика программирования
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
1

Выбор архитектурного решения для выборки зависимых объектов (С#)

15.01.2020, 12:21. Показов 637. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть CRM система которая требует рефакторинга.

Есть один контроллер для отображения списка объектов и есть зависимый котроллер, который показывает список дочерних объектов. Например, Компании и сотрудники компании.
Задача усложняется когда надо показать список по транзитивной зависимости. Например, у сотрудников есть контактный телефон. Надо для данной компании показать все контактные телефоны компании.
(Компания->Сотрудник->Телефон = Компания -> Телефон).

Вот список рассмотренных вариантов и причины, по которым они были отклонены:

1) Каждое отношение между данными представлено в виде класса,
который накладывает фильтр на источник данных зависимых записей,
используя данные родительского объекта
- это скорее функция, чем объект. Создавать множество классов не есть хорошим архитектурным решением.

2) Делегат, или лямда-выражение, которое передает родительский
контроллер дочернему. Используя этот делегат дочерний контроллер
самостоятельно накладывает фильтр на источник данных.
- невозможно переиспользовать такие делегаты, чтоб порождает дублирующийся код

3) На слое модели данных(Entity model) выборку дочерних объектов предоставляет родительский объект.
- В случае транзиктивной зависимости это не относится к модели данных, потому не может быть определено в слое модели данных
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2020, 12:21
Ответы с готовыми решениями:

Поиск архитектурного решения для поставленной задачи
Доброго времени суток всем. Нужен совет - как построить структуру работы приложения для моей...

Реализация архитектурного решения. Наследование и интерфейсы
Всем привет! Опишу ситуацию. Есть базовая сущность с наследниками: class BaseEntity {} class...

Результат выборки передать GET запросом для изменения условий другой выборки
Есть такая таблица menu: Таким запросом вывожу на страницу: <?php include ("bd.php"); ...

Выбор ЯП для решения ЕГЭ
Доброго времени суток участникам форума. Стою перед выбором ЯП для решения ЕГЭ. Свои первые строчки...

3
Модератор
Эксперт функциональных языков программирования
3077 / 2226 / 462
Регистрация: 26.03.2015
Сообщений: 8,626
15.01.2020, 16:24 2
Шаблон "Спецификация" рассматривали?
1
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
17.01.2020, 12:27  [ТС] 3
Это хороший шаблон для объединения нескольких условий.

Да, в системе могут пересекаться несколько разных условий.
Например, для Контактов
1) все сотрудники компании А(как деталь под списком компаний)
2) пользователь попросил всех пользователей с именем "аноним"
3) права пользователя на доступ к данным.

Но главный вопрос не как их объединить, а где их разместить(в какой слой)
1) отдельная библиотека, или пространство имен в проекте
2) как часть модели данных (NHibernate)
3) как часть сервиса между контроллерами окон
4) как часть контроллеров
0
Модератор
Эксперт функциональных языков программирования
3077 / 2226 / 462
Регистрация: 26.03.2015
Сообщений: 8,626
18.01.2020, 22:09 4
Модель предметной области кроме служб будет содержать спецификации. Упрощенно код будет выглядеть так:
C#
1
var users = new UserService().Get().Satisfy(new UserCompanySpecification("A")).Satisfy(new UserNameSpecification("anonim"));
Добавлено через 1 минуту
Есть еще другой паттерн - Command Query Responsibility Segregation.
1
18.01.2020, 22:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2020, 22:09
Помогаю со студенческими работами здесь

Выбор ЯП для решения задачи
Здравствуйте! У меня имеется задача - разработка имитационно-моделирующего комплекса на базе PC,...

Как проверить две выборки по критерию хи квадрат (есть функция chi2gof но она для одной выборки)
как проверить две выборки по критерию хи квадрат (есть функция chi2gof но она для одной выборки)

Выбор элементов для решения задачи
Есть задача на xaml страничке реализовать такой интерфейс: слева находятся группа...

Выбор недорогого, но производительного решения для работы.
Уважаемые эксперты, помогите пожалуйста с выбором ноутбука! Интересует ниша бюджетных ноутбуков в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru