powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / BLL работает с Model или ViewModel?
25 сообщений из 109, страница 2 из 5
BLL работает с Model или ViewModel?
    #38547684
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDTO не мапится в "свою копию". оно мапится во ViewModel. и их полная идентичность -- это лишь частный случай, который не даёт право подсовывать DTO вместо ViewModel.

Кроме как "дает право" и "так нужно" ничего внятного от тебя не слышно.
Начнем с матчасти. )
Для каких нужд мы создаем DTO?

hVosttModel >= ViewModel, и не стоит делать "узкие кортежи" ради призрачной производительности. это глупо. выигрыша даже в 10мс вы не получите. ORM умеет офигенно кешировать. если мало, делается агрессивное кеширование там где это требуется. кстати, где это требуется, кортежи не помогут

Истинные джедаи всю модель выгружают в кеш, целиком. ))
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547707
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон, мой репо может юзаться другими платформами, например, впф. Зачем мне в впф твои вью модели с привинченными атрибутами валидации? Ты предлагаешь в впф тянуть референс на мвц?
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547716
T_STV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, МСУ, skyANA

А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2?
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547727
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T_STVhVostt, МСУ, skyANA

А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2?

Да хоть три

Код: c#
1.
2.
3.
4.
5.
6.
public class EmployeeDetail
{
    public Employee Employee { get; set; }
    public Department Department { get; set; }
    public IEnumerable<Check> Checks { get; set; }
}
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547737
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон4. Проблемы с List<GridItem> GetMyItems(bool isActive) пока не ясны )
Очень и очень плохая практика отдавать наружу реализацию списка, а не абстракцию (IList<T>, IEnumerable<T>). Абстракция описывает поведение, а список является реализацией этого поведения. Потребители могут захотеть иметь какую-то свою реализацию. Например, в впф мне нужна такая реализация - отслеживаемая коллекция ObservableCollection<T>. Поэтому, не нужно навязывать реализацию, правильнее отдать низкоуровневую абстракцию в угоду универсальности.
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547744
T_STV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУT_STVhVostt, МСУ, skyANA

А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2?

Да хоть три

Код: c#
1.
2.
3.
4.
5.
6.
public class EmployeeDetail
{
    public Employee Employee { get; set; }
    public Department Department { get; set; }
    public IEnumerable<Check> Checks { get; set; }
}


А это разве не ViewModel? Этот класс нужен конкретному интерфейсу.
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547763
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПотребители могут захотеть иметь какую-то свою реализацию. Например, в впф мне нужна такая реализация - отслеживаемая коллекция ObservableCollection<T>. Поэтому, не нужно навязывать реализацию, правильнее отдать низкоуровневую абстракцию в угоду универсальности.
List просто говорит мне, что это уже готовые к употреблению данные.


МСУПарамон, мой репо может юзаться другими платформами, например, впф. Зачем мне в впф твои вью модели с привинченными атрибутами валидации? Ты предлагаешь в впф тянуть референс на мвц?
В принципе валидация менятся не должна. Можно вью модели вынести в отдельню сборку, не суть, мне такой вариант тоже не по вкусу.

Юзать один репо хорошо, в случае если впф и все остальные платформы имеют идентичную логику. На практике такое редко, обычно там покажи больше, здесь это лишнее и тд.
В итоге для каждой платформы разные срезы данных, dto для сервиса это не dto для впф.
Какой тогда профит от одной общей, избыточной библиотеки, если там каждый метод используется один раз?

Ну разве что инкапсуляция )
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547826
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANAПарамон, а как Вы думаете почему вообще разделяют Model и ViewModel?

Понятие Model зависит от контекста, а ViewModel уже как то связана с View, логично? )Не увиливайте от ответа. Контекст в названии и начале топика определён

ПарамонskyANAНапример у меня в маленьком проекте одни и те же классы бизнес-логики используются как в десктоп админке, в MVC приложении, в API сервисе для интеграции с внешними системами, так и в сервисе для мобильных клиентов.
То есть части одной и той же доменной модели доступны абсолютно разным представлениям.

Вам оно может быть и не надо сейчас, но подумайте, что если завтра заказчик к сайту захочет ещё и сервис, отдающий JSON его партнёрам, а послезавтра ещё и экспортировать и ипортировать данные в формате XML?

Для каждой выборки свой dto?1. У меня в Domain Model нет DTO, а полноценные бизне-объекты.
2. Что есть каждая выборка?

ПарамонА потом оно мапится в свои копии ака ViewModels?Да, это нормальная практика. Даже с примерами в книжках

ПарамонВот и представь, что...Хорошо себе представляю, т.к. продукт развивается вместе с предметной областью и требованиями бизнеса . Не вижу проблем.

P.S.: подумайте над тем, зачем я выделил жирным строчку.
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547828
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANAНа фига вообще DAL, BLL? Из грида сразу в БД, фигли. Всего-то надо SqlDataSource прописать.
Вот кстати в ObjectDataSource по идее что передавать нужно? А GridView вообще отлично IQueryable кушает, это нормально?Не могу отвтеить, так как ни разу не пользовался ObjectDataSource и IQueryable в представление не пробрасывал
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547835
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУПотребители могут захотеть иметь какую-то свою реализацию. Например, в впф мне нужна такая реализация - отслеживаемая коллекция ObservableCollection<T>. Поэтому, не нужно навязывать реализацию, правильнее отдать низкоуровневую абстракцию в угоду универсальности.
List просто говорит мне, что это уже готовые к употреблению данные.


МСУПарамон, мой репо может юзаться другими платформами, например, впф. Зачем мне в впф твои вью модели с привинченными атрибутами валидации? Ты предлагаешь в впф тянуть референс на мвц?
В принципе валидация менятся не должна. Можно вью модели вынести в отдельню сборку, не суть, мне такой вариант тоже не по вкусу.

Юзать один репо хорошо, в случае если впф и все остальные платформы имеют идентичную логику. На практике такое редко, обычно там покажи больше, здесь это лишнее и тд.
В итоге для каждой платформы разные срезы данных, dto для сервиса это не dto для впф.
Какой тогда профит от одной общей, избыточной библиотеки, если там каждый метод используется один раз?

Ну разве что инкапсуляция )Без конкретики спорить не имеет смысла. О какой предметной области идёт речь?

P.S.: лично я с избыточностью пока не сталкивался. Может потому, что не пытался запихнуть всё в ядро системы?
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547838
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T_STVhVostt, МСУ, skyANA

А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2?А что лежит в этих таблицах? Как это связано с бизнес-логикой? Зачем делать джоин?

Очень часто используют Object-Relational Mapping, чтобы из реляционных данных получить бизнес-сущность.
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547844
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA1. У меня в Domain Model нет DTO, а полноценные бизне-объекты.
2. Что есть каждая выборка?

Выборка, это когда мне нужно выбрать только два поля модели из 5 свзязанных таблиц. Такое бывает?

ПарамонP.S.: подумайте над тем, зачем я выделил жирным строчку.
Не знаю, красивое предложение? )

skyANAНе могу отвтеить, так как ни разу не пользовался ObjectDataSource и IQueryable в представление не пробрасывал

Вот пример )
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547853
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANA1. У меня в Domain Model нет DTO, а полноценные бизне-объекты.
2. Что есть каждая выборка?
Выборка, это когда мне нужно выбрать только два поля модели из 5 свзязанных таблиц. Такое бывает?Не припомню.

Помню нужно было основную часть данных страницы вытащить из MongoDB, без компонентов и их настроек. А два поля из 5 таблиц. Нет, не было такого.

А как Вы решаете такие задачи? SELECT прям в коде страницы выполняете?

ПарамонskyANAP.S.: подумайте над тем, зачем я выделил жирным строчку. Не знаю, красивое предложение? )Не угадали

ПарамонskyANAНе могу отвтеить, так как ни разу не пользовался ObjectDataSource и IQueryable в представление не пробрасывал
Вот пример )А зачем он мне? Вам же был нужен.
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547876
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА как Вы решаете такие задачи? SELECT прям в коде страницы выполняете?

Делаю класс с нужными полями (для меня это dto и viewmodel в одном флаконе), и передаю куда нужно.
На самом деле ViewModel я называю класс, который объединяет в себе несколько сущностей, нужных для комплексного представления.

Типа этого.
Код: c#
1.
2.
3.
4.
5.
6.
public class EmployeeViewModel
{
    public Employee Employee { get; set; }
    public Department Department { get; set; }
    public IEnumerable<Check> Checks { get; set; }
}
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38547936
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон, и как он используется?
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548134
T_STV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAT_STVhVostt, МСУ, skyANA

А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2?А что лежит в этих таблицах? Как это связано с бизнес-логикой? Зачем делать джоин?

Очень часто используют Object-Relational Mapping, чтобы из реляционных данных получить бизнес-сущность.
Я имею в виду если мне в грид надо вынести джоин, чтобы пользователю было всё видо наглядно. А по поводу ORM - так у меня 2 объекта Table1 И Table2. Я же не буду тянуть всегда связь одной таблицы со всеми, на которые она ссылается.
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548154
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T_STV, ещё раз: как это связано с бизнес-логикой?

То есть пользователь работал себе с "плоскими" данными и тут бац, оказалось, что нагляднее выводить JOIN?

Дайте больше конкретики: что в Table1, что в Table2? Почему на уровне DAL нельзя сделать JOIN и результат представить в виде объекта(ов) предметной области?
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548217
T_STV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAT_STV, ещё раз: как это связано с бизнес-логикой?

То есть пользователь работал себе с "плоскими" данными и тут бац, оказалось, что нагляднее выводить JOIN?

Дайте больше конкретики: что в Table1, что в Table2? Почему на уровне DAL нельзя сделать JOIN и результат представить в виде объекта(ов) предметной области?
Давайте так. Есть классы:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Category
{
    public int ID {get;set;}
    public string Name {get;set;}
}

public class Product
{
    public int ID {get;set;}
    public string Name {get;set;}
    public int CategoryID {get;set;}
}



Мне в грид надо вывести: Product.Name | Category.Name
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548245
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонList просто говорит мне, что это уже готовые к употреблению данные.

List ни о чём таком не говорит. это эффективная коллекция для использования в реализации, но никак не для обмена данными. для обмена нужно использовать что-нибудь из следующего:

IReadOnlyCollection<T>
IReadOnlyList<T>
IEnumerable<T>
ICollection<T>
IList<T>
Collection<T>

при чём экземпляр List проканает за любой из вышеописанных интерфейсов и обстракций.
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548247
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T_STV, сразу бы так. А то Table1, Table2.

ИМХО должно быть так:
Код: c#
1.
2.
3.
4.
5.
6.
public class Product
{
    public int ID {get;set;}
    public string Name {get;set;}
    public Category Category {get;set;}
}
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548257
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонВыборка, это когда мне нужно выбрать только два поля модели из 5 свзязанных таблиц. Такое бывает?

это ярый олдскул. бывает, но нафиг не нужно. over 90% уверенности, что это можно качественно зарефакторить и убрать "грязь". работа с чистой Domain моделью, это очень и очень хорошая концепция.

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

но нет же. продолжают бубнить одно да потому что "производительность, бла-бла-бла...", "меньше кода, бла-бла-бла..." было б хоть чего общего с реальностью. нет. всё дело в закостенелости мышления и привычки. не надо придумывать никаких глупых отговорок.
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548280
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttList ни о чём таком не говорит. это эффективная коллекция для использования в реализации, но никак не для обмена данными. для обмена нужно использовать что-нибудь из следующего:

IReadOnlyCollection<T>
IReadOnlyList<T>
IEnumerable<T>
ICollection<T>
IList<T>
Collection<T>

Опять "нужно", "должен", внятно объясни зачем.
Допустим IEnumerable<T> может быть отложенный, но мне не нужен.
Пресловутой реализации тоже не будет.

skyANAПарамон, и как он используется?

Передается во view.
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548289
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttПарамонВыборка, это когда мне нужно выбрать только два поля модели из 5 свзязанных таблиц. Такое бывает?
это ярый олдскул. бывает, но нафиг не нужно. over 90% уверенности, что это можно качественно зарефакторить и убрать "грязь". работа с чистой Domain моделью, это очень и очень хорошая концепция.
Предлагаешь тащить данные на все поля 5 сущностей? Ты там чего укурился?

Задача классическая, решается элементарно.

Если мне нужно только Product.Name и Category.Name, я отдают Product с заполненными Name и Category.Name, остальное всё пустое. Тем самым из базы я тяну только 2 поля!

Код: c#
1.
2.
3.
4.
5.
6.
public class Product
{
    public int ID {get;set;}
    public string Name {get;set;}
    public Category Category {get;set;}
}



Хвост, ты меня просто поражаешь.

Если структура такая (почему бы и нет)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Category
{
    public int ID {get;set;}
    public string Name {get;set;}
}

public class Product
{
    public int ID {get;set;}
    public string Name {get;set;}
    public int CategoryID {get;set;}
}



тоже самое, я беру из базы только 2 поля, намаплимаю на свою расширенную модель ProductInfo и отдаю в выхлоп.

public class ProductInfo
{
public Product Product {get;set;}
public Category Category {get;set;}
}

Будут заполнены только ProductInfo.Product.Name и ProductInfo.Category.Name
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548302
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttэто ярый олдскул. бывает, но нафиг не нужно. over 90% уверенности, что это можно качественно зарефакторить и убрать "грязь". работа с чистой Domain моделью, это очень и очень хорошая концепция.

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

но нет же. продолжают бубнить одно да потому что "производительность, бла-бла-бла...", "меньше кода, бла-бла-бла..." было б хоть чего общего с реальностью. нет. всё дело в закостенелости мышления и привычки. не надо придумывать никаких глупых отговорок.
Слезь с броневичка, не на митинге )
Нахватался умных слов, которые не совсем понимаешь.
Что такое Domain модель в твоем понимании, какие у нее цели?
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548316
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANAПарамон, и как он используется?

Передается во view.А как данными заполняется? Напрямую из БД, минуя BLL и DAL?
...
Рейтинг: 0 / 0
25 сообщений из 109, страница 2 из 5
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / BLL работает с Model или ViewModel?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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