Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как вы избегаете anemic model в ef / 25 сообщений из 40, страница 1 из 2
14.08.2014, 23:14
    #38720802
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
все инжектите или все-же через локатор?
...
Рейтинг: 0 / 0
14.08.2014, 23:30
    #38720807
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.,

а как anemic model или ее избегание связано с DI или Service Locator?
...
Рейтинг: 0 / 0
14.08.2014, 23:57
    #38720818
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
LelouchDenis.,

а как anemic model или ее избегание связано с DI или Service Locator?
это говорит о том, что вы ее даже не пытались избегать)
...
Рейтинг: 0 / 0
14.08.2014, 23:59
    #38720819
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.,

А зачем избегать?
...
Рейтинг: 0 / 0
15.08.2014, 00:01
    #38720820
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
gandjustas,

ну представим случай, что бл настолько сложна и изменчива что смысл имеет
...
Рейтинг: 0 / 0
15.08.2014, 00:03
    #38720822
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.,

а с чего ты взял что в этом случае имеет смысл?
...
Рейтинг: 0 / 0
15.08.2014, 00:04
    #38720823
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
gandjustas,

опыт подсказывает
...
Рейтинг: 0 / 0
15.08.2014, 00:40
    #38720830
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.,

Какой? Приведи конкретный пример.
...
Рейтинг: 0 / 0
15.08.2014, 00:58
    #38720834
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
gandjustas,
пример чего? отличия ооп от процедурнго программировния?
...
Рейтинг: 0 / 0
15.08.2014, 01:03
    #38720836
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
gandjustas,
у тебя бл где живет? В батонклике? В менеджере\хелпере\контроллере? Или в моделе? А если в моделе как ты ей скармливаешь сервисы?
...
Рейтинг: 0 / 0
15.08.2014, 01:16
    #38720838
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.,

конечно в отдельных классах. я не называю их менеджерами или хелперами, это мешает читаемости. В модель пихать БЛ - плохая идея, ибо нужно загружать целые объекты на каждый чих, а это тормозит. У меня 90% запросов используют проекции.
...
Рейтинг: 0 / 0
15.08.2014, 01:18
    #38720839
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.gandjustas,
пример чего? отличия ооп от процедурнго программировния?
Нет. Пример того, чем мешает анемик при сложной и изменчивой логике.
...
Рейтинг: 0 / 0
15.08.2014, 13:08
    #38721183
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.,

И все-таки, раскройте, как DI и ServiceLocator связаны с избеганием анемичной модели.
...
Рейтинг: 0 / 0
15.08.2014, 14:32
    #38721295
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
gandjustasDenis.gandjustas,
пример чего? отличия ооп от процедурнго программировния?
Нет. Пример того, чем мешает анемик при сложной и изменчивой логике.
апи искать сложнее, код читать сложнее итд итп
man.Shout() manHelper.Shout(man)
...
Рейтинг: 0 / 0
15.08.2014, 14:40
    #38721309
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.gandjustasпропущено...

Нет. Пример того, чем мешает анемик при сложной и изменчивой логике.
апи искать сложнее, код читать сложнее итд итп
man.Shout() manHelper.Shout(man)

1) надо нормальные имена давать, а не 100500 helper\manager классов
2) во многих случаях можно тупо Extension методами обойтись
3) там где нельзя - сервисные классы инжектятся в контроллеры, и не надо искать ничего.

С поисками АПИ проблемы всегда. Функция создания заказа это:
1) new Order(customer)
2) customer.CreateOrder()
3) shoppingCart.CreateOrder()

Я видел систему со всеми тремя вариантами и они работали по-разному ;)
...
Рейтинг: 0 / 0
15.08.2014, 14:45
    #38721313
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
LelouchDenis.,

И все-таки, раскройте, как DI и ServiceLocator связаны с избеганием анемичной модели.
Чтобы модель делала что-то полезное ей в 99% случаев нужны внешние зависимости.
Простой пример - есть сущность ссылка. У этой сущности есть поле майгуид. Уникальная строка в 6 символов. Чтобы делать этот гуид есть сервис, скажем, guidProvider. Выходит чтобы создать ссылку мне нужно или передать в конструктор провайдер, или передать готовый гуид, или достать guidProvider через локатор. Как только логика становится сложнее количество зависимостей растет очень быстро.
...
Рейтинг: 0 / 0
15.08.2014, 14:50
    #38721316
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
gandjustas,

скажу честно - не убедительно. Ну то что вы рассказали это процедурное программирование "чистой воды". Я не говорю что это всегда плохо, но топик не об этом.
Предлагаю в этой теме не обсуждать ненужность rich model, а все-же обсудить варианты ее релизации в контексте ef с учетом сложной бл и множества зависимостей.
...
Рейтинг: 0 / 0
15.08.2014, 15:22
    #38721347
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.,

Чтобы обсуждать варианты реализации нужно понять зачем это делать.

Пока только один ответ увидел: "чтобы писать man.Shout()".

Это совершенно не аргумент по двум причинам:
1) Тоже самое можно сделать экстеншн-методами.
2) В реальном проекте такой код встречается крайне редко.

Зато уже очевидна проблема с тем, что нужно загружать полный класс man, даже если метод Shout использует одно поле.

Получается вы придумали проблему, которой реально нет, потом пытаетесь придумать решения, которое тянет вполне реальные проблемы. Я предлагаю вернуться в начало и попытаться найти ту проблему, которую вы пытаетесь решить.
...
Рейтинг: 0 / 0
15.08.2014, 15:23
    #38721348
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.апи искать сложнее, код читать сложнее итд итп
man.Shout() manHelper.Shout(man)

это отвратительно. какой manHelper ещё? оба способа не жизнеспособны.

gandjustasС поисками АПИ проблемы всегда. Функция создания заказа это:
1) new Order(customer)
2) customer.CreateOrder()
3) shoppingCart.CreateOrder()

почему не так

var result = OrderService.CreateOrder(items);
...
Рейтинг: 0 / 0
15.08.2014, 15:26
    #38721351
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.Чтобы модель делала что-то полезное ей в 99% случаев нужны внешние зависимости.
Простой пример - есть сущность ссылка. У этой сущности есть поле майгуид. Уникальная строка в 6 символов. Чтобы делать этот гуид есть сервис, скажем, guidProvider. Выходит чтобы создать ссылку мне нужно или передать в конструктор провайдер, или передать готовый гуид, или достать guidProvider через локатор. Как только логика становится сложнее количество зависимостей растет очень быстро.

с опытом придёт, что проблема не только в зависимостях, но и в разделении ответственности. с простыми примерами всё ясно, а чуть сложнее и надо будет ломать голову, кто же отвечает за создание заказа: модель заказа или модель корзины? треш и ад тому, кто будет это говно сопровождать.
...
Рейтинг: 0 / 0
15.08.2014, 15:27
    #38721353
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
hVosttgandjustasС поисками АПИ проблемы всегда. Функция создания заказа это:
1) new Order(customer)
2) customer.CreateOrder()
3) shoppingCart.CreateOrder()

почему не так

var result = OrderService.CreateOrder(items);

Такой код вызывался внутри shoppingCart.CreateOrder() :)
...
Рейтинг: 0 / 0
15.08.2014, 15:38
    #38721371
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
gandjustasТакой код вызывался внутри shoppingCart.CreateOrder() :)

1) new Order(customer)
2) customer.CreateOrder()

вот эти способы я бы сразу отправил на помойку без суда и следствия.
...
Рейтинг: 0 / 0
15.08.2014, 15:48
    #38721381
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
Denis.LelouchDenis.,

И все-таки, раскройте, как DI и ServiceLocator связаны с избеганием анемичной модели.
Чтобы модель делала что-то полезное ей в 99% случаев нужны внешние зависимости.
Простой пример - есть сущность ссылка. У этой сущности есть поле майгуид. Уникальная строка в 6 символов. Чтобы делать этот гуид есть сервис, скажем, guidProvider. Выходит чтобы создать ссылку мне нужно или передать в конструктор провайдер, или передать готовый гуид, или достать guidProvider через локатор. Как только логика становится сложнее количество зависимостей растет очень быстро.

Тема не раскрыта. DI и ServiceLocator позволяют уменьшить связанность в модели, но избегать анемичной модели они не помогают ( и не мешают )
...
Рейтинг: 0 / 0
15.08.2014, 17:21
    #38721469
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
gandjustas,

я думал я говорю о понятных вещах
тут больше
1
2
...
Рейтинг: 0 / 0
15.08.2014, 17:24
    #38721472
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вы избегаете anemic model в ef
hVostt... а чуть сложнее и надо будет ломать голову, кто же отвечает за создание заказа: модель заказа или модель корзины? треш и ад тому, кто будет это говно сопровождать.

hVosttпочему не так

var result = OrderService.CreateOrder(items);


а почему не ShoppingCart.CreateOrder(items);
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как вы избегаете anemic model в ef / 25 сообщений из 40, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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