powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как половчее управляться с ViewModel-ями?
25 сообщений из 216, страница 1 из 9
Как половчее управляться с ViewModel-ями?
    #39030448
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В прошлом проекте решил обойтись без них - в итоге сущности уровня БД превратились в какую-то невнятную кашу с полями помеченными [NotMapped] и прочая.. А во вьюхи местами передавались жуткие Tuple<>.

Так что решено - вьюмоделям быть.

Но сейчас решил отрефакторить свои 30 сущностей и чем дальше в лес...

Как правильней поступить?

Я в итоге сделал так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public abstract class _product
{
 //Тут всё определяется
}

public class productDB:_product{} //Этот класс "сидит в EF контексте"
public class productVM:_product
{

public productVM(productDB product)
 //Тут какие-то доп. поля, свойства, фукнции
}



Через наследование решил заморочить, чтобы не париться с "синхронизацией" полей между классами, обычно они нужны одинаковыми.
Это нормально? Смущает, что как-то дофига работы вылезло - кучу конструкторов создать, конвертеров из одного класса в другой...
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030453
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Monochromatique,

Ужасно!

1. базовый класс для EF и для VM -- очень-очень-очень-очень-очень плохо
2. конструктор у VM -- плохо
3. пытаться равнять VM / EF-Entity -- плохо

что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают?

то, что оверхеда много? надо повторять поля там и там?
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030464
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttMonochromatique,

Ужасно!

1. базовый класс для EF и для VM -- очень-очень-очень-очень-очень плохо
2. конструктор у VM -- плохо
3. пытаться равнять VM / EF-Entity -- плохо

что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают?

то, что оверхеда много? надо повторять поля там и там?


1. Почему?
2. Почему? Гарантия того, что все поля у VM будут проиничены.
3. ??? Еще вчера сущность EF и являлась VM. А сегодня их равнять нельзя.

Наследование от абстрактного класса и единственный конструктор - даёт гарантию от того кейса, когда при добавлении одного поля - придётся носиться по всему коду - и искать - где я забыл проинитить новое поле.

Ну и то, что нужно вручную прописывать поля, да.. Они же реально должны быть одинаковыми, разве что в VM добавлена какая-то мишура для Вьюхи.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030476
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Monochromatique,


hVostt что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают?


Самый что не на есть правильный вариант! +1 к SOLID

hVostt то, что оверхеда много? надо повторять поля там и там?

Да нет уже такого оверхеда, как было раньше! Сейчас существует такое количество мапперов и Automapper'ов, что об оверхеде и речи вести не стоит! Так что вывод - "независимые Model и ViewModel - правильное решение!
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030483
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Product
{
    // "Тут всё определяется"
}

public class ProductViewModel
{
    public Product Base;

    // "Тут какие-то доп. поля, свойства, фукнции"
}
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030484
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalabongaДа нет уже такого оверхеда, как было раньше! Сейчас существует такое количество мапперов и Automapper'ов, что об оверхеде и речи вести не стоит! Так что вывод - "независимые Model и ViewModel - правильное решение!Чтобы при изменении структуры данных пришлось править её в двух местах без контроля компилятором? Решение для тех, кто любит боль и страдания.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030505
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Product
{
    // "Тут всё определяется"
}

public class ProductViewModel
{
    public Product Base;

    // "Тут какие-то доп. поля, свойства, фукнции"
}



Это лежит на поверхности, но не избавляет от необходимости повторять поля со всеми аннотациями. Не ссылаться же во вьюхах на модель ef, пусть и в составе vm. Да и архитектурно это решение выглядит странновато, типа vm для галочки.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030507
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalabongaMonochromatique,


hVostt что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают?


Самый что не на есть правильный вариант! +1 к SOLID

hVostt то, что оверхеда много? надо повторять поля там и там?

Да нет уже такого оверхеда, как было раньше! Сейчас существует такое количество мапперов и Automapper'ов, что об оверхеде и речи вести не стоит! Так что вывод - "независимые Model и ViewModel - правильное решение!

Насколько я понимаю - мапперу все равно нужно задавать правила? Если так - то проще заюзать свой, ИМХО.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030509
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalabongaMonochromatique,


hVostt что смущает в подходе независимых EF-Entity и VM ? которые друг о друге ничего не знают?


Самый что не на есть правильный вариант! +1 к SOLID



Так в случае наследования от единого абстрактного класса EF-entity и VM тоже ничего друг о друге "не знают".
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030512
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может быть еще и на входе контроллера собирать VM?? А не EF-Entity?

Как-то странно всё это выглядит.

Надо ваять кучу конвертеров, с ручным контролем. И как справедливо заметил Алексей - ошибки в рантайме - это вообще метатреш.

Может отделаться методами расширения к EF-сущности?
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030513
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае использования отдельной VM придется использовать инит ВСЕХ полей, независимо от того - нужны они или нет. О ленивой загрузке от EF придется забыть. Тоже трешовенько.

Мне вообще может только название нужно, но я подтяну все связи вообще.

Сейчас методы расширения к EF кажутся самыми привлекательными.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030514
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueАлексей К
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Product
{
    // "Тут всё определяется"
}

public class ProductViewModel
{
    public Product Base;

    // "Тут какие-то доп. поля, свойства, фукнции"
}



Это лежит на поверхности, но не избавляет от необходимости повторять поля со всеми аннотациями.Инкапсуляция как раз и не требует дублирования структуры данных. А вот атрибуты на свойствах для View - это действительно создаёт проблемы, я бы не использовал их по этой причине.
MonochromatiqueНе ссылаться же во вьюхах на модель ef, пусть и в составе vm.Почему нет?
MonochromatiqueДа и архитектурно это решение выглядит странновато, типа vm для галочки.Нормально выглядит.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030713
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Monochromatique1. Почему?

Жёсткая зависимость, которая будет неистово колотить по лбу всё время разработки.

Monochromatique2. Почему? Гарантия того, что все поля у VM будут проиничены.

Этого не нужно. А когда вдруг становится нужно, похоже пора заниматься рефакторингом. Вью-модели для ASP.NET MVC должны быть максимально тупые.

Monochromatique3. ??? Еще вчера сущность EF и являлась VM. А сегодня их равнять нельзя.

Никогда не являлась. Не было такого.

MonochromatiqueНаследование от абстрактного класса и единственный конструктор - даёт гарантию от того кейса, когда при добавлении одного поля - придётся носиться по всему коду - и искать - где я забыл проинитить новое поле.

Нет никакой гарантии. Что такое поле? Свойство класса? Ты слабо понимаешь что такое вью-модель. Например, одно поле ввода во вью-модели может разворачиваться в в итоге создание дополнительных объектов.

Если же ты делаешь тупой редактор базы данных (как phpMySql), а не бизнес-приложение, то возможно ты себе немного упростишь работу. Но ты определишь, что ты делаешь.

MonochromatiqueНу и то, что нужно вручную прописывать поля, да.. Они же реально должны быть одинаковыми, разве что в VM добавлена какая-то мишура для Вьюхи.

Странно всё это. Ну не делай вообще вью-моделей, тащи Entity из EF-контекса прям во вью. Получишь пару раз по лбу, тогда всё поймёшь. Видимо трудный путь обучения ты выбрал, через тернии
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030717
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueНасколько я понимаю - мапперу все равно нужно задавать правила? Если так - то проще заюзать свой, ИМХО.

Просто вью-модели понимаются не верно.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030803
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttMonochromatiqueНасколько я понимаю - мапперу все равно нужно задавать правила? Если так - то проще заюзать свой, ИМХО.

Просто вью-модели понимаются не верно.

В WPF/SL/WP как-то понималось, а вот в ASP MVC - не понимается, ну да.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030811
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЭтого не нужно. А когда вдруг становится нужно, похоже пора заниматься рефакторингом. Вью-модели для ASP.NET MVC должны быть максимально тупые.

Не понимаю. Добавили в DBEntity еще одно поле. Также добавили его во вью-модель. Теперь надо обеспечить заполняемость этого поля во вью-модели.

В случае единственного конструктора - понятно что-делать - это пара нажатий.

В случае каких-то других способов создания - унылый отлов ошибок через runtime.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030815
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Никогда не являлась. Не было такого.

Я имею ввиду шаблоны и примеры из книг.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030819
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt тащи Entity из EF-контекса прям во вью. Получишь пару раз по лбу, тогда всё поймёшь.

А что получишь то? На поверхности только "сложность" кейса - когда к DBEntity нужны какая-то доп. информация.

А что еще?
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030824
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueВ WPF/SL/WP как-то понималось, а вот в ASP MVC - не понимается, ну да.

Вью-модель ≠ entity.

При чём, «так набор полей же одинаааакавый» -- вообще какая-то глупость.

В entity свойство — это колонка в хранилище, обычно в БД. Колонка!

Во view model свойство — это информация для вывода или поле для ввода.

И они как по семантике, так и по использованию совершенно разные. Детский и наивных способ смотреть на вещи плоско, недалеко и не дальновидно. Чаще всего как раз ViewModel не имеет ничего общего с Entity из EF. По крайне мере в мире разразобки ПО для людей.

Если же вы делаете однобокое CRUD-приложение, аля редактор базы данных, то я даже не знаю как вам проблему свою решать
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030829
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueВ случае каких-то других способов создания - унылый отлов ошибок через runtime.

Бред какой-то. Добавил поле в базу -- это что автоматически означает, что появилось поле ввода во вью? Что за примитивную лабуду ты там делаешь?
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030834
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueА что получишь то? На поверхности только "сложность" кейса - когда к DBEntity нужны какая-то доп. информация.

А что еще?

Пока не получишь, не узнаешь

Ладна ладна... Вью-модель отражает именно те данные ввода/вывода, которые нужны конкретно этой вью, а вью в свою очередь отражает именно ту бизнес-операцию, которая требуется.

Или ты тупо выводишь свои Entity и редактируешь их со всеми полями что есть? Что ты вообще делаешь? Может ну его нафик, хернёй страдать?
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030871
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttаля редактор базы данных

В том или ином виде - любое приложение - редактор базы данных.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030872
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt Добавил поле в базу -- это что автоматически означает, что появилось поле ввода во вью?

В большинстве случаев - именно так. Я не в badoo работаю - мой кейс - унылый ентерпрайз.
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030873
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiquehVosttаля редактор базы данных

В том или ином виде - любое приложение - редактор базы данных.
Но коментс
...
Рейтинг: 0 / 0
Как половчее управляться с ViewModel-ями?
    #39030883
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИли ты тупо выводишь свои Entity и редактируешь их со всеми полями что есть?

Ну зачастую, стараюсь, чтобы так и было. А что тебя так бомбит-то?

Часть полей прячется, часть добавляется (для информации).

Вот из-за этих добавляемых полей - и приходится делать выбор между трех огней.
...
Рейтинг: 0 / 0
25 сообщений из 216, страница 1 из 9
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как половчее управляться с ViewModel-ями?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]