Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
В прошлом проекте решил обойтись без них - в итоге сущности уровня БД превратились в какую-то невнятную кашу с полями помеченными [NotMapped] и прочая.. А во вьюхи местами передавались жуткие Tuple<>. Так что решено - вьюмоделям быть. Но сейчас решил отрефакторить свои 30 сущностей и чем дальше в лес... Как правильней поступить? Я в итоге сделал так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Через наследование решил заморочить, чтобы не париться с "синхронизацией" полей между классами, обычно они нужны одинаковыми. Это нормально? Смущает, что как-то дофига работы вылезло - кучу конструкторов создать, конвертеров из одного класса в другой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 00:03 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
Monochromatique, Ужасно! 1. базовый класс для EF и для VM -- очень-очень-очень-очень-очень плохо 2. конструктор у VM -- плохо 3. пытаться равнять VM / EF-Entity -- плохо что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают? то, что оверхеда много? надо повторять поля там и там? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 00:14 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
hVosttMonochromatique, Ужасно! 1. базовый класс для EF и для VM -- очень-очень-очень-очень-очень плохо 2. конструктор у VM -- плохо 3. пытаться равнять VM / EF-Entity -- плохо что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают? то, что оверхеда много? надо повторять поля там и там? 1. Почему? 2. Почему? Гарантия того, что все поля у VM будут проиничены. 3. ??? Еще вчера сущность EF и являлась VM. А сегодня их равнять нельзя. Наследование от абстрактного класса и единственный конструктор - даёт гарантию от того кейса, когда при добавлении одного поля - придётся носиться по всему коду - и искать - где я забыл проинитить новое поле. Ну и то, что нужно вручную прописывать поля, да.. Они же реально должны быть одинаковыми, разве что в VM добавлена какая-то мишура для Вьюхи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 00:38 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
Monochromatique, hVostt что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают? Самый что не на есть правильный вариант! +1 к SOLID hVostt то, что оверхеда много? надо повторять поля там и там? Да нет уже такого оверхеда, как было раньше! Сейчас существует такое количество мапперов и Automapper'ов, что об оверхеде и речи вести не стоит! Так что вывод - "независимые Model и ViewModel - правильное решение! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 02:49 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 04:53 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
CalabongaДа нет уже такого оверхеда, как было раньше! Сейчас существует такое количество мапперов и Automapper'ов, что об оверхеде и речи вести не стоит! Так что вывод - "независимые Model и ViewModel - правильное решение!Чтобы при изменении структуры данных пришлось править её в двух местах без контроля компилятором? Решение для тех, кто любит боль и страдания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 04:54 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
Алексей К Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Это лежит на поверхности, но не избавляет от необходимости повторять поля со всеми аннотациями. Не ссылаться же во вьюхах на модель ef, пусть и в составе vm. Да и архитектурно это решение выглядит странновато, типа vm для галочки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 07:14 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
CalabongaMonochromatique, hVostt что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают? Самый что не на есть правильный вариант! +1 к SOLID hVostt то, что оверхеда много? надо повторять поля там и там? Да нет уже такого оверхеда, как было раньше! Сейчас существует такое количество мапперов и Automapper'ов, что об оверхеде и речи вести не стоит! Так что вывод - "независимые Model и ViewModel - правильное решение! Насколько я понимаю - мапперу все равно нужно задавать правила? Если так - то проще заюзать свой, ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 07:16 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
CalabongaMonochromatique, hVostt что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают? Самый что не на есть правильный вариант! +1 к SOLID Так в случае наследования от единого абстрактного класса EF-entity и VM тоже ничего друг о друге "не знают". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 07:19 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
А может быть еще и на входе контроллера собирать VM?? А не EF-Entity? Как-то странно всё это выглядит. Надо ваять кучу конвертеров, с ручным контролем. И как справедливо заметил Алексей - ошибки в рантайме - это вообще метатреш. Может отделаться методами расширения к EF-сущности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 07:32 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
В случае использования отдельной VM придется использовать инит ВСЕХ полей, независимо от того - нужны они или нет. О ленивой загрузке от EF придется забыть. Тоже трешовенько. Мне вообще может только название нужно, но я подтяну все связи вообще. Сейчас методы расширения к EF кажутся самыми привлекательными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 07:37 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
MonochromatiqueАлексей К Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Это лежит на поверхности, но не избавляет от необходимости повторять поля со всеми аннотациями.Инкапсуляция как раз и не требует дублирования структуры данных. А вот атрибуты на свойствах для View - это действительно создаёт проблемы, я бы не использовал их по этой причине. MonochromatiqueНе ссылаться же во вьюхах на модель ef, пусть и в составе vm.Почему нет? MonochromatiqueДа и архитектурно это решение выглядит странновато, типа vm для галочки.Нормально выглядит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 07:39 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
Monochromatique1. Почему? Жёсткая зависимость, которая будет неистово колотить по лбу всё время разработки. Monochromatique2. Почему? Гарантия того, что все поля у VM будут проиничены. Этого не нужно. А когда вдруг становится нужно, похоже пора заниматься рефакторингом. Вью-модели для ASP.NET MVC должны быть максимально тупые. Monochromatique3. ??? Еще вчера сущность EF и являлась VM. А сегодня их равнять нельзя. Никогда не являлась. Не было такого. MonochromatiqueНаследование от абстрактного класса и единственный конструктор - даёт гарантию от того кейса, когда при добавлении одного поля - придётся носиться по всему коду - и искать - где я забыл проинитить новое поле. Нет никакой гарантии. Что такое поле? Свойство класса? Ты слабо понимаешь что такое вью-модель. Например, одно поле ввода во вью-модели может разворачиваться в в итоге создание дополнительных объектов. Если же ты делаешь тупой редактор базы данных (как phpMySql), а не бизнес-приложение, то возможно ты себе немного упростишь работу. Но ты определишь, что ты делаешь. MonochromatiqueНу и то, что нужно вручную прописывать поля, да.. Они же реально должны быть одинаковыми, разве что в VM добавлена какая-то мишура для Вьюхи. Странно всё это. Ну не делай вообще вью-моделей, тащи Entity из EF-контекса прям во вью. Получишь пару раз по лбу, тогда всё поймёшь. Видимо трудный путь обучения ты выбрал, через тернии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 13:07 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
MonochromatiqueНасколько я понимаю - мапперу все равно нужно задавать правила? Если так - то проще заюзать свой, ИМХО. Просто вью-модели понимаются не верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 13:59 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
hVosttMonochromatiqueНасколько я понимаю - мапперу все равно нужно задавать правила? Если так - то проще заюзать свой, ИМХО. Просто вью-модели понимаются не верно. В WPF/SL/WP как-то понималось, а вот в ASP MVC - не понимается, ну да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:19 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
hVosttЭтого не нужно. А когда вдруг становится нужно, похоже пора заниматься рефакторингом. Вью-модели для ASP.NET MVC должны быть максимально тупые. Не понимаю. Добавили в DBEntity еще одно поле. Также добавили его во вью-модель. Теперь надо обеспечить заполняемость этого поля во вью-модели. В случае единственного конструктора - понятно что-делать - это пара нажатий. В случае каких-то других способов создания - унылый отлов ошибок через runtime. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:23 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
hVostt Никогда не являлась. Не было такого. Я имею ввиду шаблоны и примеры из книг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:24 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
hVostt тащи Entity из EF-контекса прям во вью. Получишь пару раз по лбу, тогда всё поймёшь. А что получишь то? На поверхности только "сложность" кейса - когда к DBEntity нужны какая-то доп. информация. А что еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:26 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
MonochromatiqueВ WPF/SL/WP как-то понималось, а вот в ASP MVC - не понимается, ну да. Вью-модель ≠ entity. При чём, «так набор полей же одинаааакавый» -- вообще какая-то глупость. В entity свойство — это колонка в хранилище, обычно в БД. Колонка! Во view model свойство — это информация для вывода или поле для ввода. И они как по семантике, так и по использованию совершенно разные. Детский и наивных способ смотреть на вещи плоско, недалеко и не дальновидно. Чаще всего как раз ViewModel не имеет ничего общего с Entity из EF. По крайне мере в мире разразобки ПО для людей. Если же вы делаете однобокое CRUD-приложение, аля редактор базы данных, то я даже не знаю как вам проблему свою решать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:28 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
MonochromatiqueВ случае каких-то других способов создания - унылый отлов ошибок через runtime. Бред какой-то. Добавил поле в базу -- это что автоматически означает, что появилось поле ввода во вью? Что за примитивную лабуду ты там делаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:29 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
MonochromatiqueА что получишь то? На поверхности только "сложность" кейса - когда к DBEntity нужны какая-то доп. информация. А что еще? Пока не получишь, не узнаешь Ладна ладна... Вью-модель отражает именно те данные ввода/вывода, которые нужны конкретно этой вью, а вью в свою очередь отражает именно ту бизнес-операцию, которая требуется. Или ты тупо выводишь свои Entity и редактируешь их со всеми полями что есть? Что ты вообще делаешь? Может ну его нафик, хернёй страдать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:31 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
hVosttаля редактор базы данных В том или ином виде - любое приложение - редактор базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 16:02 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
hVostt Добавил поле в базу -- это что автоматически означает, что появилось поле ввода во вью? В большинстве случаев - именно так. Я не в badoo работаю - мой кейс - унылый ентерпрайз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 16:03 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
MonochromatiquehVosttаля редактор базы данных В том или ином виде - любое приложение - редактор базы данных. Но коментс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 16:04 |
|
||
|
Как половчее управляться с ViewModel-ями?
|
|||
|---|---|---|---|
|
#18+
hVosttИли ты тупо выводишь свои Entity и редактируешь их со всеми полями что есть? Ну зачастую, стараюсь, чтобы так и было. А что тебя так бомбит-то? Часть полей прячется, часть добавляется (для информации). Вот из-за этих добавляемых полей - и приходится делать выбор между трех огней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 16:09 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=39030819&tid=1356087]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 387ms |

| 0 / 0 |
