Size: a a a

2020 February 24

S

Sergey Trofimov in CODE BLOG / C#
я делал прежде всего такой репо чтобы сократить код при вызове и работе с разными БД.
Раньше у меня репозитории по 1000 строк были
источник

s.

sauwork . in CODE BLOG / C#
у Вас получается , что разные сущности можно сохранять в одном репозитории , это совсем проиворечит всем правилам
источник

s.

sauwork . in CODE BLOG / C#
и при этом репозиторий еще должен уметь все возможные сущности обрабатыать
источник

S

Sergey Trofimov in CODE BLOG / C#
Почему протеворечит?
источник

S

Sergey Trofimov in CODE BLOG / C#
Где те правила?)
источник

S

Sergey Trofimov in CODE BLOG / C#
Что один репо на 1 сущность
источник

s.

sauwork . in CODE BLOG / C#
ну , потому что смысл теряется , во первых придется этот репозиторий переписывать каждый раз , зачем ?
источник

S

Sergey Trofimov in CODE BLOG / C#
А писать новый репо каждый раз на новую сущность лучше?
источник

s.

sauwork . in CODE BLOG / C#
разумеется , один репо = один тип сущности , появляются новые сущности - расширяем перечень репозиториев без изменений в истеме
источник

s.

sauwork . in CODE BLOG / C#
ну а интерфейс может быть общим , только такой IRepository<T>
источник

S

Sergey Trofimov in CODE BLOG / C#
ну я работаю с ЕФ, гвооррю же, мне так проще. У меня появляются сущности, а репо не изменяется
источник

S

Sergey Trofimov in CODE BLOG / C#
хоть миллион сущностей будет, репл как был 100 строк так и останется
источник

S

Sergey Trofimov in CODE BLOG / C#
единственно что инклюды бывает нужны для обхода lazyload
источник

s.

sauwork . in CODE BLOG / C#
ну , тогда Вы название паттерна используете не по назначению , это все что угодно , но не реализация репо )
источник

s.

sauwork . in CODE BLOG / C#
и жестко зависите от EF
источник

S

Sergey Trofimov in CODE BLOG / C#
sauwork .
ну , тогда Вы название паттерна используете не по назначению , это все что угодно , но не реализация репо )
Я не вижу разницы создавать новый репо каждый раз для новой сущщности или дописывать класс репо, как по мне равнозначно)
источник

s.

sauwork . in CODE BLOG / C#
ну я же пояснил , разница в том , что у Вас есть какой то универсальный репозиторий , который по определению умеет хранить все что угодно. В природе такого не бывает. Как только встанет задача поменять тип репозитория без переписывания всех зависимостей - т.е интерфейс остается . так у вас все сервисы попадают , если репозиторий не способен будет сохранить используемые ими сущности.  Притом , что очередная имплементация ничего не знает о возможных типах и как их можно хранить , т.к перечень возможных T не определен.
источник

S

Sergey Trofimov in CODE BLOG / C#
sauwork .
ну я же пояснил , разница в том , что у Вас есть какой то универсальный репозиторий , который по определению умеет хранить все что угодно. В природе такого не бывает. Как только встанет задача поменять тип репозитория без переписывания всех зависимостей - т.е интерфейс остается . так у вас все сервисы попадают , если репозиторий не способен будет сохранить используемые ими сущности.  Притом , что очередная имплементация ничего не знает о возможных типах и как их можно хранить , т.к перечень возможных T не определен.
В конкретно этой реализации нет. Но достаточно сделать T: ISomeEntity и все
источник

S

Sergey Trofimov in CODE BLOG / C#
Тогда вы автоматом можете сохранять только определенные сущности, удволетворяющие неким правилам
источник

s.

sauwork . in CODE BLOG / C#
да , но тогда тут же гибкость теряется )
источник