![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
1 | |
Какая должна быть связь?27.02.2020, 10:36. Показов 1264. Ответов 26
Есть две модели, модель станций
И модель маршрутов Вопрос какая между ними должна быть связь? Один ко многим, или многие ко многим? (Маршрут включает в себя информацию: начальная станция и время отправления; конечная станция и время прибытия; список промежуточных станций, и время прибытия/стоянки/отправления для каждой из них.)
0
|
27.02.2020, 10:36 | |
Ответы с готовыми решениями:
26
Какой должна быть строка подключения к БД если она в другом проекте? Какая связь проекта с файлами в папке AppData\Local\Temp\Temporary ASP.NET Files Какая должна быть структура проекта онлайн магазина? |
![]() |
|
27.02.2020, 22:27 | 2 |
Anvean, теоретически много-ко-многим: у каждого маршрута может быть много станций, как и каждая станция может быть во многих маршрутах.
Но тут проблема: сложно будет сохранить и определить порядок станций для каждого маршрута. Решение: создать промежуточный объект RailrouteStation с полями Railroute, Station, Order и связать его при помощи 1-ко-многим с Railroute и Station UPD: Еще бы уникальный индекс накинул на все поля, чтобы дублирования позиций не было
1
|
![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
27.02.2020, 22:29 [ТС] | 3 |
Cupko, Я думаю эта модель не есть правильной, можно ведь просто модель маршрута определить как один список станций, так вроде бы должно быть проще, но я пока думаю какие могут быть подводные камни. Как бы вы реализовали модель маршрутов?
Добавлено через 1 минуту Cupko, уникальный индекс на поля, это как?:D
0
|
![]() |
|
27.02.2020, 22:31 | 4 |
Я ж вам и говорю, проблема только в порядке станций. Вы не сможете гарантировать что первая/последняя/промежуточная станция будет в выборке там, где надо. Добавляйте поле Order и сортируйте по нему. Откажитесь от свойств First/Last/Intermediate и выбирайте их из коллекции после сортировки
0
|
![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
27.02.2020, 22:34 [ТС] | 5 |
Cupko, из этой коллекции virtual Icollection<Station> Stations?
0
|
![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
27.02.2020, 22:38 [ТС] | 7 |
Cupko, Ага,теперь дошло, это получается новая модель, верно?
0
|
![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
27.02.2020, 22:42 [ТС] | 9 |
Cupko, спасибо вам огромное, вы себе не представляете как меня выручаете.
Добавлено через 2 минуты Cupko, только вот, если отказаться от свойств First/intermedia/last в модели Railroute, оставить в ней только поле для связи с моделью станций и конструктор?
0
|
![]() |
|
27.02.2020, 22:48 | 10 |
Anvean, не совсем понял вопроса. Убираете First/Last/Intermediate, оставляете RailrouteStations (ICollection<RailrouteStation>), тогда First у вас будет -
RailrouteStations.OrderBy(x => x.Order).FirstOrDefault()?.Station , Last - RailrouteStations.OrderByDescending(x => x.Order).FirstOrDefault()?.Station , Intermediate - RailrouteStations.OrderBy(x => x.Order).Skip(1).Take(RailrouteStations.Length - 2)
0
|
![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
27.02.2020, 22:53 [ТС] | 11 |
Cupko, как понять "оставляете" если RailrouteStantions это новая модель будет с полями(Railroutr/stantion/ordee), тем не менее модель Railroute тоже ведь останется но из нее мы убрали фактически все поля, что будет в ней?
0
|
![]() |
|
27.02.2020, 22:56 | 12 |
Anvean, ничего вы с модели Railroute не убираете, как и из Station (кроме связей между друг другом). Связи меняете на RailrouteStation и там и там. Всё.
Не по теме: Вот если бы вы вместо скринов постили код, мне было бы проще объяснить, скопипастив некоторые фрагменты
0
|
![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
27.02.2020, 23:06 [ТС] | 13 |
Cupko, Насчет скринов учту, подитожу если вы не против.
Делаю новую модель RailrouteStantion с полями остальных моделей и свойством для сортировки. ?При этом из модели Railroute не удаляю свойства Firststation/intermedia/last, но я от них отказываюсь¿ Связываю новую модель 1-ко-многим с Railroute и Station. Дальше работаю с UnitOfWork с помощью модели RailrouteStantions. Так-же нужно будет добавить контекст данных для RailrouteStantions. Выделил то что не совсем понятно. Все верно понял?
0
|
![]() |
|
27.02.2020, 23:10 | 14 |
Удаляете
Не надо с ней работать напрямую, нужно работать с Railroute или Station. Это просто модель для связи, никакой смысловой нагрузки она не несет. Нужно
0
|
![]() 4602 / 2624 / 721
Регистрация: 02.08.2011
Сообщений: 7,035
|
||||||||||||||||
27.02.2020, 23:13 | 15 | |||||||||||||||
Тут yurickas уже упоминал ,что станции могут быть узловыми, то есть входить в состав нескольких маршрутов.
Поскольку станция - это фактическое единственное общественное место, откуда отправляются и куда прибывают пассажиры, то я бы саму таблицу станций оформил как справочник с некоторой доп. информацией. Далее маршрут - это последовательность точек маршрута, соответственно с начальной и конечной точкой маршрута. Грубо модель бы вылядела так:
1) Route to RoutePoint - one-to-many 2) Station to RoutePoint - one-to-many 3) RoutePoint to Station - one-to-one Те свойства, которые можно добавить, а можно и не добавлять - это уже на свое усмотрение, у вас там как раз в ТЗ было указано, что это поощряется. Далее просто осталось правильно сконфигурировать через EntityTypeConfiguration<T> и начальная модель готова.
0
|
![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
27.02.2020, 23:14 [ТС] | 16 |
0
|
![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
27.02.2020, 23:26 [ТС] | 17 |
IamRain, Ваш вариант выглядит несколько сложнее, даже не знаю чей вариант мне более подходит.
Спасибо вам за очень подробный ответ, лайки закончились к сожалению:D
0
|
![]() 4602 / 2624 / 721
Регистрация: 02.08.2011
Сообщений: 7,035
|
|
27.02.2020, 23:34 | 18 |
А вы ясно сформулируйте сколько у вас сущностей и сколько (и каких) связей между этими сущностями, тогда можно будет сравнить сложности этих моделей.
Да ничего, зато картинок с кодом много, Instagram тинейджер ![]() Добавлено через 4 минуты Anvean, учитывая, что у вас возникали проблемы с конфигуроированием БД и с миграциями в соседнем посте, рекомендую прочесть эту книгу от Джулии Лерман - Code First.
0
|
27.02.2020, 23:35 | 19 |
0
|
![]() 63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
27.02.2020, 23:43 [ТС] | 20 |
IamRain, теперь понял почему инстаграм тинейджер, скриншоты мне показались намного удобнее, но я уже понял что это не так))
В варианте Сирко, две сущности и одна промежуточная, выходит две связи один ко многим. Выходит его вариант легче?) Добавлено через 3 минуты IamRain, Спасибо за книгу, к сожалению у меня две недели на этот проэкт, ТЗ я думаю вы видели, в связи с этим вообще нет времени читать книги, а информации в интернете очень часто недостаточно, поэтому и приходится задавать глупые вопросы умным людям, если зафейлю проэкт и меня не возьмут на препрод, обязательно прочту эту книгу:)
0
|
27.02.2020, 23:43 | |
Помогаю со студенческими работами здесь
20
Какая должна быть длина одной стороны шестиугольника, если расстояние между ними должно быть 2.5 метра. Какая температура должна быть? Какая база должна быть? какая должна быть температура? какая скорость должна быть? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Новые блоги и статьи
![]() |
||||
Вопросы на собеседовании по Android
mobDevWorks 14.03.2025
По данным статистики, Android занимает более 70% мирового рынка мобильных операционных систем, что делает платформу привлекательной как для начинающих разработчиков, так и для опытных профессионалов. . . .
|
Лучшие игровые движки для Python
py-thonny 14.03.2025
Python обеспечивает разработчиков игр мощными движками и фреймворками, которые позволяют воплотить практически любую идею — от простой аркады до визуального романа с разветвленным сюжетом. Главное. . .
|
Бессерверный JavaScript: Разработка масштабируемых API с AWS Lambda
run.dev 14.03.2025
Но что такое бессерверные вычисления на самом деле? По сути, это модель облачных вычислений, где разработчик фокусируется исключительно на создании бизнес-логики, не тратя время на настройку. . .
|
Безопасность кода в C++26: Менеджеры ресурсов и висячие ссылки
NullReferenced 14.03.2025
C++ всегда был языком, предоставляющим разработчикам большие возможности и гибкость, но вместе с тем требующим ответственности. Одной из самых коварных проблем даже для опытных программистов остаются. . .
|
smart-agent proper interface settings (2025)
jigi33 14.03.2025
Smart-agent proper interface settings (mart 2025).
(see screenshots to look at "Etalon" ARM)
|
Продвинутые настройки JVM
Javaican 14.03.2025
Стандартные параметры запуска JVM хороши для повседневной разработки, но совершенно недостаточны для высоконагруженных систем. Представьте, что вы запускаете финансовую платформу, обрабатывающую. . .
|
CI/CD для приложений Java с Azure DevOps и Docker
Mr. Docker 14.03.2025
Разработка современных Java-приложений немыслима без системы непрерывной интеграции и доставки (CI/ CD). Azure DevOps в сочетании с Docker предоставляет мощный инструментарий для создания таких. . .
|
Разработка на PHP и интернет вещей (IoT)
Jason-Webb 14.03.2025
Интернет вещей (IoT) произвел настоящую революцию в способах взаимодействия устройств с окружающим миром. В эпоху, когда холодильники сами заказывают молоко, а термостаты учатся вашим привычкам,. . .
|
Node.js 20: Новые возможности и улучшения производительности
Reangularity 14.03.2025
Что же принёс нам релиз Node. js 20? В первую очередь, это существенные улучшения в производительности. Движок V8 получил серьёзные оптимизации, благодаря чему JavaScript-код выполняется заметно. . .
|
Безопасность кластеров Apache Kafka
Javaican 14.03.2025
Apache Kafka стал одним из ключевых компонентов современных архитектур, обрабатывающих потоки данных в режиме реального времени. Его используют тысячи компаний от стартапов до технологических. . .
|