powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Уменьшение зависимости от DAL слоя
6 сообщений из 6, страница 1 из 1
Уменьшение зависимости от DAL слоя
    #37787159
_Thor_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую

Возникла такая дилемма.
Есть простое приложение, попросту говоря "морда к базе", показать в гриде и отредактировать запись.
Для работы с БД используется Dapper .NET.
Есть классы сущности, отражающие таблицы в БД. От этих сущностей наследуются классы модели.

Может не совсем корректно описал, поэтому лучше покажу на примере:
Сущность:
Код: c#
1.
2.
3.
4.
5.
6.
7.
class ProductEntity
{
  int Id;
  string Name;
  int CategoryId;
  int UserId;
}



Модель:
Код: c#
1.
2.
3.
4.
5.
class ProductModel: ProductEntity
{  
  string CategoryName;
  string UserName;
}



Все SQL запросы реализованы в виде хранимых процедур. Соответственно ХП возвращает не чистую сущность, а уже готовую модель, для отображения пользователю.

Так вот дилемма состоит в том, что нужно уменьшить зависимость между сущностями и моделями.

Пока на уме только одно решение, это использовать интерфейсы для проецирования таблиц и запросов. Сделать своего рода так:
Сущьность:
Код: c#
1.
2.
3.
4.
5.
6.
7.
class ProductEntity: IProduct
{
  int Id;
  string Name;
  int CategoryId;
  int UserId;
}



Модель:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class ProductModel: IProductView
{  
  int Id;
  string Name;
  int CategoryId;
  int UserId;  
  string CategoryName;
  string UserName;
}



Но не уверен что это правильное решение, т.к. это в разы увеличивает код и соответственно усложняет его поддержку.

Посоветуйте наиболее компромиссное решение.

Спасибо.
...
Рейтинг: 0 / 0
Уменьшение зависимости от DAL слоя
    #37787241
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Thor_,

Не надо вообще делать различие между сущностями и моделями.
...
Рейтинг: 0 / 0
Уменьшение зависимости от DAL слоя
    #37787302
_Thor_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw,

Я хочу выделить модели, что бы использовать их для валидации через атрибуты.
Хотя может все св-ва в сущностях сделать виртуальными...
...
Рейтинг: 0 / 0
Уменьшение зависимости от DAL слоя
    #37788546
besserebrenik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Thor_,

В свое время я нашел много материала об уменьшении зависимости от слоя DAL в этом блоге http://blog.byndyu.ru/

Я сам не очень опытный разработчик, но уже обжегся в поисках "серебряной пули". Делайте то, что нужно вам в данный момент
...
Рейтинг: 0 / 0
Уменьшение зависимости от DAL слоя
    #37788548
besserebrenik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Thor_,

Кстати )) Занимаюсь тем-же ) Пытаюсь сейчас найти способ не объявлять все свойства виртуальными для мэппинга.. Вот тема , но пока никто не отвечает и, боюсь, из-за того, что иного варианта, как объявить свойства виртуальными - нет. Сам перерыл кучу буржуйских сайтов - тишина ) Если найдете способ не объявлять свойства виртуальными - отпишитесь!
...
Рейтинг: 0 / 0
Уменьшение зависимости от DAL слоя
    #37790642
_Thor_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После некоторого времени обдумывания и поисков, пришел к выводу что есть два наиболее подходящих варианта:
1. Dependency Injection
2. Не разделять сущности от моделей представления/бизнес логики.

Для варианта 1), набросал простой класс маппер однотипных объектов или имеющих одного предка, через Expressions, с возможностью передачи имен св-в в виде строки, которые не нужно маппить.
Но все же как не крути вариант 1) это значительное усложнение архитектуры проекта в целом, да еще представил как это все потом поддерживать...

Сам проект, как писалось ранее просто "морда к базе", как таковой бизнес логики там нет. Нужно просто прочитать данные и показать. Все зависимости между таблицами реализованы на уровне ХП и ограничиваются чтением поля Name из связанной таблицы. Поэтому потребности в дополнительном связывании объектов между собой.
В результате я решил прибегнуть к вариунту 2). Есть модели которые отражают результаты работы ХП. Сами ХП возвращают уже готовые к отображению данные.

Впрочем как сразу и ответил kmaw.

В общем, не стоит в очередной раз усложнять и без того сложные вещи, даже если это не по феншую. :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Уменьшение зависимости от DAL слоя
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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