|
Уменьшение зависимости от DAL слоя
|
|||
---|---|---|---|
#18+
Приветствую Возникла такая дилемма. Есть простое приложение, попросту говоря "морда к базе", показать в гриде и отредактировать запись. Для работы с БД используется Dapper .NET. Есть классы сущности, отражающие таблицы в БД. От этих сущностей наследуются классы модели. Может не совсем корректно описал, поэтому лучше покажу на примере: Сущность: Код: c# 1. 2. 3. 4. 5. 6. 7.
Модель: Код: c# 1. 2. 3. 4. 5.
Все SQL запросы реализованы в виде хранимых процедур. Соответственно ХП возвращает не чистую сущность, а уже готовую модель, для отображения пользователю. Так вот дилемма состоит в том, что нужно уменьшить зависимость между сущностями и моделями. Пока на уме только одно решение, это использовать интерфейсы для проецирования таблиц и запросов. Сделать своего рода так: Сущьность: Код: c# 1. 2. 3. 4. 5. 6. 7.
Модель: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но не уверен что это правильное решение, т.к. это в разы увеличивает код и соответственно усложняет его поддержку. Посоветуйте наиболее компромиссное решение. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2012, 02:38 |
|
Уменьшение зависимости от DAL слоя
|
|||
---|---|---|---|
#18+
_Thor_, Не надо вообще делать различие между сущностями и моделями. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2012, 08:42 |
|
Уменьшение зависимости от DAL слоя
|
|||
---|---|---|---|
#18+
kmaw, Я хочу выделить модели, что бы использовать их для валидации через атрибуты. Хотя может все св-ва в сущностях сделать виртуальными... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2012, 09:56 |
|
Уменьшение зависимости от DAL слоя
|
|||
---|---|---|---|
#18+
_Thor_, В свое время я нашел много материала об уменьшении зависимости от слоя DAL в этом блоге http://blog.byndyu.ru/ Я сам не очень опытный разработчик, но уже обжегся в поисках "серебряной пули". Делайте то, что нужно вам в данный момент ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2012, 22:47 |
|
Уменьшение зависимости от DAL слоя
|
|||
---|---|---|---|
#18+
_Thor_, Кстати )) Занимаюсь тем-же ) Пытаюсь сейчас найти способ не объявлять все свойства виртуальными для мэппинга.. Вот тема , но пока никто не отвечает и, боюсь, из-за того, что иного варианта, как объявить свойства виртуальными - нет. Сам перерыл кучу буржуйских сайтов - тишина ) Если найдете способ не объявлять свойства виртуальными - отпишитесь! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2012, 22:50 |
|
Уменьшение зависимости от DAL слоя
|
|||
---|---|---|---|
#18+
После некоторого времени обдумывания и поисков, пришел к выводу что есть два наиболее подходящих варианта: 1. Dependency Injection 2. Не разделять сущности от моделей представления/бизнес логики. Для варианта 1), набросал простой класс маппер однотипных объектов или имеющих одного предка, через Expressions, с возможностью передачи имен св-в в виде строки, которые не нужно маппить. Но все же как не крути вариант 1) это значительное усложнение архитектуры проекта в целом, да еще представил как это все потом поддерживать... Сам проект, как писалось ранее просто "морда к базе", как таковой бизнес логики там нет. Нужно просто прочитать данные и показать. Все зависимости между таблицами реализованы на уровне ХП и ограничиваются чтением поля Name из связанной таблицы. Поэтому потребности в дополнительном связывании объектов между собой. В результате я решил прибегнуть к вариунту 2). Есть модели которые отражают результаты работы ХП. Сами ХП возвращают уже готовые к отображению данные. Впрочем как сразу и ответил kmaw. В общем, не стоит в очередной раз усложнять и без того сложные вещи, даже если это не по феншую. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2012, 11:31 |
|
|
start [/forum/topic.php?fid=17&fpage=34&tid=1350358]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 140ms |
0 / 0 |