|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
В гугле нашел достаточно не мало реализаций паттерна Unit Of Work совместно с EF. Однако статьи предлагают самые разные варианты, и при этом довольно очень очень старые (года этак от 2013). В части встречаемых решений видел код такого вида: Код: c# 1. 2. 3. 4. 5. 6.
Что мне кажется не верным. Транзакция должна уметь окружать несколько последовательных запросов. Ну и другие странности встречались. Поэтому. Подскажите пожалуйста проверенную в боевых условиях реализацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 17:48 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
EF, NH - это уже UoW. что Вам не хватает? Транзакции (TransactionScope, как вариант) - это уровень сервисов. можно конечно, например, для веб, весь веб-запрос обернуть в транзакцию. а лучше так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
repository - он только с методом SaveChange, чтобы дернуть базовый UoW (EF, NH) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 21:38 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
UoW - это шире, чем просто обвеска над DAL. с DAL он может быть вообще не связан. а Вы, как мне кажется, пытаетесь "применить паттерн" где он и так есть. это бесполезное занятие ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 21:44 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Полностью согласен, обвязываем ORM сервисами, инжектируем их в презентеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 22:11 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
fsharp_fsharpUoW - это шире, чем просто обвеска над DAL. с DAL он может быть вообще не связан. а Вы, как мне кажется, пытаетесь "применить паттерн" где он и так есть. это бесполезное занятие Не бесполезное, так как базовой функциональности EF может не хватать. Тем более никто не гарантирует, что все 100% бизнес данных будут лежать в одной базе данных и доступной через один контекст EF. Самый банальный пример: прикрепленные файлы, которые не грузятся в БД, а хранятся отдельно, но их сохранение вместо со ссылкой в БД, это единая транзакция. В примерах по-сложнее, данные могут разлетаться по разным СУБД, в монгу, в поисковые индексы и прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 08:18 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVostt, тебе ясно намекнули на сервисы. Расширяйся через них. EF - это контекст только конкретной БД, он ничего не должен знать о чем-то другом, о логике, о звездах. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 09:22 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
СмузиhVostt, тебе ясно намекнули на сервисы. Расширяйся через них. EF - это контекст только конкретной БД, он ничего не должен знать о чем-то другом, о логике, о звездах. Всё верно. Но при чём тут твои сервисы? Речь идёт про UOW. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 10:51 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVosttВсё верно. Но при чём тут твои сервисы? Речь идёт про UOW. Ты невнимателен. Прочитай еще раз самый первый ответ от fsharp_fsharp. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 11:06 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
СмузиhVosttВсё верно. Но при чём тут твои сервисы? Речь идёт про UOW. Ты невнимателен. Прочитай еще раз самый первый ответ от fsharp_fsharp. На что я должен был обратить внимание? Я перечитал, и всё сказанное мной в силе. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 11:26 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVosttНа что я должен был обратить внимание? На то, что EF - и так уже коробочный UoW. Автор хочет расширений, ему говорят расширяться в сервисах. Ты пишешь про какую-то нехватку функциональности EF и о том, что данные могут быть не только в одной БД. Я объясняю, что эта задача покрывается теми же сервисами, оперирующими EF. Ты пишешь "всё верно, но причем тут сервисы". Клиника. P.S. Итог: какой-то свой UoW в задаче не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 11:50 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
fsharp_fsharpUoW - это шире, чем просто обвеска над DAL. с DAL он может быть вообще не связан. а Вы, как мне кажется, пытаетесь "применить паттерн" где он и так есть. это бесполезное занятие Я застрял вот с чем. На нижнем уровне мы имеем репозитории под каждый тип сущностей. И репозитории находятся в DbContext. Затем, с репозиториями работают сервисы. Сервисов может быть много - не пихать же всю логику в один. И вот работу нескольких сервисов нужно объединить в одну транзакцию. А это снова уровень DbContext.Получается, что DbContext в этой логике появляется дважды. Я нигде еще пока не нашел хорошего примера, где это учитывается: т.е. имеются сервисы, репозитории и работа ведется в рамках транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 11:52 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Смузи, Вы конечно все хорошо пишете. Про то, что UOW есть в самом EF. Но вот по транзациям не ясно как быть. Кто их должен стартовать и потом передавать управление сервисам, работающим с репозиториям. Я уж не затрагиваю тестирование и IOC. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:16 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Fungusfsharp_fsharpUoW - это шире, чем просто обвеска над DAL. с DAL он может быть вообще не связан. а Вы, как мне кажется, пытаетесь "применить паттерн" где он и так есть. это бесполезное занятие Я застрял вот с чем. На нижнем уровне мы имеем репозитории под каждый тип сущностей. И репозитории находятся в DbContext. Затем, с репозиториями работают сервисы. Сервисов может быть много - не пихать же всю логику в один. И вот работу нескольких сервисов нужно объединить в одну транзакцию. А это снова уровень DbContext.Получается, что DbContext в этой логике появляется дважды. Я нигде еще пока не нашел хорошего примера, где это учитывается: т.е. имеются сервисы, репозитории и работа ведется в рамках транзакции. если используется один DbContext на все, то можно сделать так: допустим, надо вызвать S3(), состоящий из S1(), S2(), как одну транзакцию 1. Провести декомпозицию туловищ существующих методов S1(), S2() Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
2. Скомпоновать третий - нужный Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:24 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusВы конечно все хорошо пишете. Про то, что UOW есть в самом EF. Но вот по транзациям не ясно как быть. Кто их должен стартовать и потом передавать управление сервисам, работающим с репозиториям. Я уж не затрагиваю тестирование и IOC. Так тут чистый IoC с сервисами, о кот. говорили ранее. Без IoC ничего не решается. Сервисы в конструкторе принимают EF контекст, который инжектится где-то DI контейнером. Поэтому мы вполне себе можем запустить в одной транзакции 2 куска кода, сидящих в разных сервисах. Потому что экземпляр контекста един, он просто размазывается по нужным сервисам. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:33 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Перегонщик перекупки, Вы предлагаете просто создать еще один сервис, который будет стартовать транзакции и просто вызывать методы других сервисов ? Это решение конечно лежит на поверхности, но где тут разделение на слои ? Потом будет каша в коде, когда не ясно какие сервисы могут стартовать транзакции, какие нет, и кто кого вызывает для реальной работы. В худшем случае получится так, что разные сервисы могут иметь методы стартующие транзакции и вызывающие другие сервисы. И в то же время быть вызываемыми из других сервисов - стартующих ртанзакции. Нет. Так не подходит. UOW нужно четко вынести в отдельный слой. Чтобы только этот слой мог стартовать транзакции и уже вызывать любые сервисы. Вопрос лишь в том, как это реализовать. Как инстанцировать этот класс UOW, как потом инстанцировать сервисы, DBContext и передавать их друг другу (чтобы DBContext был один). Ищу такой вот пример. Но нахожу лишь простейшие реализации с репозиториями без учета транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:39 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Смузи, Так а транзакцию кто стартует в вашем варианте ? Кто вызывает SaveChanges ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:40 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusТак а транзакцию кто стартует в вашем варианте ? Кто вызывает SaveChanges ? Какой-то из сервисов, к примеру второй. У второго сервиса может быть IoC зависимость на первый сервис. Поэтому, второй сервис стартует транзакцию, вызывает какую-то логику из первого сервиса, потом что-то делает ещё, а потом SaveChanges. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:47 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusПерегонщик перекупки, Вы предлагаете просто создать еще один сервис, который будет стартовать транзакции и просто вызывать методы других сервисов ? Это решение конечно лежит на поверхности , но где тут разделение на слои ? что значит где? репо и сервисы так и остались. просто ваш 3-й сервис - это композиция 2-х + какая-то его внутренняя логика. и именно этот 3-й сервис и примет решение о SaveChanges ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:54 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Смузи, Буквально выше ответил Перегонщик перекупки, что ТАКОЙ подход приведет к каше. Получается UOW никак не выделен в отдельный слой. Им может выступать любой сервис. И потом фиг разберешся какие сервисы могут стартовать транзакцию, а какие нет. А потом наступит момент, когда один сервис стуртующий транзакцию должен будет вызывать другой сервис стартующий транзакции - вот тогда начнется полная каша. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:54 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusТАКОЙ подход приведет к каше Так и так каша получается. Запускать в одной транзакции методы разных слоёв - дырка в архитектуре. Хочется идеалов - нужно переносить эту логику в один метод. Хочется малой кровью решить текущую проблему - я писал рецепт. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 13:01 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
СмузиНа то, что EF - и так уже коробочный UoW. Автор хочет расширений, ему говорят расширяться в сервисах. Ты пишешь про какую-то нехватку функциональности EF и о том, что данные могут быть не только в одной БД. Я объясняю, что эта задача покрывается теми же сервисами, оперирующими EF. Ты пишешь "всё верно, но причем тут сервисы". Клиника. UOW в EF не является UOW в рамках всего приложения. Бизнес-транзакционность не обеспечивается, поэтому: СмузиP.S. Итог: какой-то свой UoW в задаче не нужен. Свой UOW нужен. Но если у тебя задачи настолько примитивные, что всё замыкается на одной единственной БД, то может быть ты и прав. Но давай не будем рассматривать настоящие задачи, которые стоят перед разработчиками через призму твоих маленьких полустуденческих решений, ок? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 13:09 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVosttUOW в EF не является UOW в рамках всего приложения EF является UOW в любых рамках, окнах и дверях. А как ты будешь инжектировать его - совсем другой вопрос. Как это делать, выше озвучил. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 13:14 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
СмузиEF является UOW в любых рамках, окнах и дверях. А как ты будешь инжектировать его - совсем другой вопрос. Как это делать, выше озвучил. Ты начинаешь играться с терминами, это означает, что по существу сказать тебе толком нечего. Да контекст EF реализует паттерн UOW, и его может вполне хватить для маленького учебного проекта. В реальных проектах нужен свой UOW, так как рамки транзакции приложения могут быть гораздо шире, чем транзакция одной БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 13:22 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVostt, У вас есть идеи того, как разбить работу с DbContext на репозитории и сервисы и перекрыть это транзакциями ? Если вы говорите, что в EF уже есть UOW, вы предлагаете не реализовывать его отдельным слоем? Как тогда предполагается работа сервисов - напрямую дерганьем DbSet'ов единственного контекста ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 13:31 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVosttВ реальных проектах нужен свой UOW, так как рамки транзакции приложения могут быть гораздо шире, чем транзакция одной БД. Приведи пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 13:54 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Fungus, Создать свой интерфейс, например, IUnitOfWork, с единственным методом Commit (или ещё с одним CommitAsync). В реализации, иметь ссылку на DbContext и дёргать за SaveChanges при вызове Commit. Вот так будет начало положено. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 13:56 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Потрясающе. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:03 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
СмузиПриведи пример. Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:03 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
СмузиПотрясающе. Задавай вопросы, уточняй. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:04 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVosttСмузиПриведи пример. Код: c# 1. 2. 3. 4.
а может хотя бы Start добавить? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:05 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRosа может хотя бы Start добавить? Зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:09 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVostt, хоть время засечь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:11 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRos, засекай, кто тебе мешает? Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
http://blog.byndyu.ru/2010/07/2-unit-of-work_10.html ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:14 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
По ссылке можно найти пример для EF: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:18 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
skyANA, ну я думаю что Create совмещать со Start как то не очень ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:19 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRosну я думаю что Create совмещать со Start как то не очень А что в твоём понимание такое Start? Начало жизни объекта UOW и есть старт транзакции по сути. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:21 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVosttViPRosну я думаю что Create совмещать со Start как то не очень А что в твоём понимание такое Start? Начало жизни объекта UOW и есть старт транзакции по сути. ну и х..во это создать объект и дать ему задание - это 2 разные вещи ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:23 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRos, просто это фуфло опирается на траскшнскоп и ты это знаешь, потому кажется что все норм ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:24 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRosну и х..во это создать объект и дать ему задание - это 2 разные вещи Так какое задание-то? Ты создал транзакцию. Зачем ещё её типа начинать? Масло маслянное. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:25 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRosskyANA, ну я думаю что Create совмещать со Start как то не очень Это new TransactionScope() для тебя тоже не очень? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:26 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVosttViPRosну и х..во это создать объект и дать ему задание - это 2 разные вещи Так какое задание-то? Ты создал транзакцию. Зачем ещё её типа начинать? Масло маслянное. нифига ты не создал а просто продублировал транзакшнскоп и то фигово ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:26 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
skyANAViPRosskyANA, ну я думаю что Create совмещать со Start как то не очень Это new TransactionScope() для тебя тоже не очень? угу ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:27 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRosskyANAпропущено... Это new TransactionScope() для тебя тоже не очень? угу А SqlConnection.BeginTransaction ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:28 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
skyANAViPRosпропущено... угу А SqlConnection.BeginTransaction ? вот это норм ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:28 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRosskyANAпропущено... А SqlConnection.BeginTransaction ? вот это норм То есть Begin норм, а Create не норм? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:31 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
hVosttСмузиПриведи пример. Код: c# 1. 2. 3. 4.
Эта "реальные проекты, в которых нужен свой UOW, так как рамки транзакции приложения могут быть гораздо шире, чем транзакция одной БД"? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:35 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRos, в чём ты видишь принципиальную разницу между этим Код: c# 1. 2. 3. 4. 5. 6.
и этим Код: c# 1. 2. 3. 4. 5. 6.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 14:38 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
skyANAViPRosпропущено... вот это норм То есть Begin норм, а Create не норм? :) Да ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 15:30 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
skyANAViPRos, в чём ты видишь принципиальную разницу между этим Код: c# 1. 2. 3. 4. 5. 6.
и этим Код: c# 1. 2. 3. 4. 5. 6.
? второй может в себе включить много первого и еще тучу всего но он должен стартануть как и первый ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 15:32 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
skyANA, Приведенный вами пример кода взят из комментария к статье, в котором также написано "ну вот я набросал на скорую руку" :) Как быть, если проект разбит на несколько DLL, занимающимися разными сферами приложения? Создавать один могучий DbContext который объеденит все сущности всех библиотек что ли ? По идее это реализовывать как отдельные репозитории, сервисы. Но при этом они должны уметь работать под одной транзакцией. Как это реализовать в приведенном примере ? Не вижу, он не походит на реальное решение. Про unit of work разговор уже много за годы. А нормальной реализации, что то не получается найти. Почему так ? Хотелось бы вот увидеть какую-то рабочую реализацию, проверенную на рабочих, не маленьких, проектах. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 16:59 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Fungus, упрощенно сервис - это метод который дергается по сети бизнес логика - вызывается сервисом , что то делает полезное и часто но не всегда (один метод бизнес логики всегда другой никогда третий как повезет) использует ORM/DbContext . Сервис перед тем как вызвать бизнес логику создает транзакцию и/или "Entity framework DbContext" как сервис создает и передает транзакцию в бизнес логику - как хочет хоть параметрами хоть IOC interceptor. правило таково что, сервис дергает только методы бизнес логики но не другие методы сервиса, бизнес логика может дергать методы других бизнес логик но не методы сервисов. ну или методы сервисов но тогда исключительно только по сети, но не сервисы которые вызывают твою бизнес логику. это для простоты в принципе сервис может вызвать метод сервиса но зачем, если бизнес логика дергнет другую бизнес логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:12 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Var79, Примерно это я и предлагаю. В моем понимании есть репозитории, и сервисы дергающие их и реализующую бизнес логику (без жесткого запрета вызовов друг друга). Я как раз ищу слой, который бы занимался транзакциями. В вашем варианте сервисы это некий дополнительный слой, который и оперирует транзакцией. А "бизнес логика" в вашей реализации, это, то что я называю сервисами. Только мне не ясно в каком виде эта бизнес логика предстает. Что она из себя представляет и в чем ее отличие от сервисов ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:22 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Var79(один метод бизнес логики всегда другой никогда третий как повезет) Чо ? O.o :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:27 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
ViPRosskyANAViPRos, в чём ты видишь принципиальную разницу между этим Код: c# 1. 2. 3. 4. 5. 6.
и этим Код: c# 1. 2. 3. 4. 5. 6.
? второй может в себе включить много первого и еще тучу всего но он должен стартануть как и первыйВот он и "стартанёт" в методе Create :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:28 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusskyANA, Приведенный вами пример кода взят из комментария к статье, в котором также написано "ну вот я набросал на скорую руку" :) Как быть, если проект разбит на несколько DLL, занимающимися разными сферами приложения? Создавать один могучий DbContext который объеденит все сущности всех библиотек что ли ? По идее это реализовывать как отдельные репозитории, сервисы. Но при этом они должны уметь работать под одной транзакцией. Как это реализовать в приведенном примере ? Не вижу, он не походит на реальное решение. И чем же не подходит? Размышления про "все сущности всех библиотек" мне не понятны. Вы в одной транзакции собрались использовать все сущности всех библиотек? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:32 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Fungusпроект разбит на несколько DLL, занимающимися разными сферами приложения FungusПро unit of work разговор уже много за годы. А нормальной реализации, что то не получается найти. Почему так ? Потому что не существует серебряной пули универсального шаблона для автоматизации каши. Мы движемся по кругу. 19924721 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:43 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
skyANA, Если приложение разбито на разные DLL, у которых свои сущности. То у этих DLL должны же быть свои собственные DbContext ? Не один же общий иметь, с куче DbSet'ов. В этом случае не ясно как оперировать несколькими DbContext в рамках UOW - в рамках одной транзакции.EF такое вообще позволяет? Пример. У нас есть DLL которая оперирует пользователями системы, и DLL оперирующая документами системами. Предположим есть процесс "Создать пользователя и документ, соответствующий этому событию". Не ясно как сделать это в рамках предложенного кода. Я и топик то создал в поисках такого решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:43 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusVar79, Примерно это я и предлагаю. В моем понимании есть репозитории, и сервисы дергающие их и реализующую бизнес логику (без жесткого запрета вызовов друг друга). Я как раз ищу слой, который бы занимался транзакциями. В вашем варианте сервисы это некий дополнительный слой, который и оперирует транзакцией. А "бизнес логика" в вашей реализации, это, то что я называю сервисами. Только мне не ясно в каком виде эта бизнес логика предстает. Что она из себя представляет и в чем ее отличие от сервисов ? сервисы это слой над бизнес логикой, до ужоса примитивный, нужен как обертка для создания всяких транзакций, UoW и всяких прочих инжектирований. сервисы не дергают репозиттории, репозитории это DAL, сервисы дергают только логику, логика чото делает и дергает либо другую логику либо дал DAL, если захочет. сервисы дергают только логику, метод сервиса содержит только грубо говоря одну строку - вызов метода логики ну или еще создания объектов для параметров метода логики например объект транзакции. сервисы точка входа для инжектирования. логика - для алгоритмов. dal/repositories - для внешней среды файликов бдшек (может даже для сети?) автор(один метод бизнес логики - всегда вызывает dal, другой - никогда, третий - как повезет) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:44 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
skyANAно он должен стартануть как и первыйВот он и "стартанёт" в методе Create :)[/quot] ну и фигово, что он стартанет без моего ведома я может их несколько хотел сунуть в еще один и стратануть синхронно ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:47 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
СмузиЗапускать в одной транзакции методы разных слоёв - дырка в архитектуре. И чем вас не устраивает, когда в рамках транзакции вызывается несколько сервисов (это один слой) вызывающие внутри себя репозитории(а это уже другой слой). Где тут дырка ? Сервисы и призваны вызывать слой DAL. Вы считаете, что делать это в рамках одной транзакции недопустимо, но как тогда вообще писать программы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:48 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusskyANA, Если приложение разбито на разные DLL, у которых свои сущности. То у этих DLL должны же быть свои собственные DbContext ? Не один же общий иметь, с куче DbSet'ов. В этом случае не ясно как оперировать несколькими DbContext в рамках UOW - в рамках одной транзакции.EF такое вообще позволяет? Пример. У нас есть DLL которая оперирует пользователями системы, и DLL оперирующая документами системами. Предположим есть процесс "Создать пользователя и документ, соответствующий этому событию". Не ясно как сделать это в рамках предложенного кода. Я и топик то создал в поисках такого решения. засуньте в UoW список тех DbContext-ов которые в данном вызове сервиса использует метод бизнес логики, измините код UoW что бы он пробежался по этому списку и у всех DbContext-ов сделал SaveChanges, если один SaveChanges упал откатываем транзакцию например возможно IOC нужно настроить что бы он смотрел какие DbContext нужны бизнес логики и фигачил в этот лист DbContext ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:50 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusСервисы и призваны вызывать слой DAL. что за ерунда. везде пишут что контролеры/ сервисы должны быть тонкими, то что сервис можно сделать толстым не значит что это нужно делать ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:52 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusСервисы и призваны вызывать слой DAL. еще раз, для альтернативно одаренных, три слоя сервисы - бизнес логика - DAL Где тут сервисы вызывают DAL? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 17:54 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusСмузиЗапускать в одной транзакции методы разных слоёв - дырка в архитектуре. И чем вас не устраивает, когда в рамках транзакции вызывается несколько сервисов (это один слой) вызывающие внутри себя репозитории(а это уже другой слой). Где тут дырка ? Сервисы и призваны вызывать слой DAL. Вы считаете, что делать это в рамках одной транзакции недопустимо, но как тогда вообще писать программы ? Я считаю, что транзакция - вещь атомарная, переводящая данные из одного целостного состояния в другое целостное состояние. Выводить атомарность в сторонние методы и слои - архитектурная ошибка. Вроде как очевидные вещи. Во-вторых, грубая ошибка иметь несколько экземпляров EF контекстов в сервисах? Думаю, комментировать не требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:03 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Var79, Контроллеры тонкими да. Но сервисы это и есть бизнес логика в моем понимании. И она может выйти весьма жирной: создание сущностей через репы, обращение к другим сервисам. Возможно мы говорим об одном и том же, просто терминология разная. Что у вас понимается под бизнес логикой. Это какие то классы, как выглядят ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:04 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Fungus, чукча не читатель чукча задаватель вопросов ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:10 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
СмузиЯ считаю, что транзакция - вещь атомарная, переводящая данные из одного целостного состояния в другое целостное состояние. Выводить атомарность в сторонние методы и слои - архитектурная ошибка. Вроде как очевидные вещи. Во-вторых, грубая ошибка иметь несколько экземпляров EF контекстов в сервисах? Думаю, комментировать не требуется. Ну так как реализовать то, что я описал в "Примере" тут 19926472 ? Иметь один контекст, в котором будут все все все сущности ? И юзеры, и их роли, и документы бизнес слоя и логирование в придачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:13 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusVar79, Контроллеры тонкими да. Но сервисы это и есть бизнес логика в моем понимании. И она может выйти весьма жирной: создание сущностей через репы, обращение к другим сервисам. Возможно мы говорим об одном и том же, просто терминология разная. Что у вас понимается под бизнес логикой. Это какие то классы, как выглядят ? бизнес логика - такс пришли бананы на 100 000 USD и арбузы на 20 000 EUR лезем в другую логику за курсом usd и eur получаем тугрики ага но ведь тугрики это не надежно, пересчитаем в банки тушенки для этого вызовем третью логику получили вагон тушенки дал запиши к нам пришло вагон тушенки ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:15 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusНо сервисы это и есть бизнес логика в моем понимании. ну так херач всё в сервисах зачем тебе DAL IOC и всякая непонятная фигня, понапридумывают же, сиди мучайся ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:18 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusСмузиЯ считаю, что транзакция - вещь атомарная, переводящая данные из одного целостного состояния в другое целостное состояние. Выводить атомарность в сторонние методы и слои - архитектурная ошибка. Вроде как очевидные вещи. Во-вторых, грубая ошибка иметь несколько экземпляров EF контекстов в сервисах? Думаю, комментировать не требуется. Ну так как реализовать то, что я описал в "Примере" тут 19926472 ? Иметь один контекст, в котором будут все все все сущности ? И юзеры, и их роли, и документы бизнес слоя и логирование в придачу. грубая ошибка иметь несколько экземпляров EF контекстов в сервисах - не знаю как на счет в сервисах, но можно иметь много разнотипных контекстов главное что бы в одной транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:23 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Var79, Мы уходим в сторону. Не хочу начинать холиварить и ругаться, о том какое разделение на слои более правильно,просто потому, что вариантов решения может быть масса. Меня интересует чисто практическое решение паттерна UOW в купе с транзакциями в рамках EF в условиях сложного проекта, состоящего из нескольких модулей разделенных по функционалу. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:29 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusИметь один контекст, в котором будут все все все сущности ? И юзеры, и их роли, и документы бизнес слоя и логирование в придачу. если сущности в разных DLL, то наверно у них независимые отношения. раз независимые отношения то можно и скорее нужно разные контексты. хотя не понимаю как юзеры могут быть отделены от ролей. но вот документы и юзеры наверно должны быть в одном контексте если в документе есть ссылка на юзера который создал документ. что будет если в разных типах контекста будет юзер, который будет перезаписываться разными контекстами - как повезет - неожиданное поведение блокировки или всё нормально, самому интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:35 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusНу так как реализовать то, что я описал в "Примере" тут 19926472 ? Иметь один контекст, в котором будут все все все сущности ? И юзеры, и их роли, и документы бизнес слоя и логирование в придачу. Контекст ORM - это схема базы данных. Если она одна, значит контекст тоже должен быть один. Типичная ошибка пытаться делить контекст на части. Через время начинаются слёзы о том, что хочется обобщения, бесшовную транзакцию, бизнес-документы с ролями и иже с ними. Разносить нужно сервисы, а не контекст. Один сервис под документы, другой под роли, третий под боли. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:39 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusVar79, Мы уходим в сторону. Не хочу начинать холиварить и ругаться, о том какое разделение на слои более правильно,просто потому, что вариантов решения может быть масса. Он не уходит в сторону, он ясно говорит о том, что допущена серьезная архитектурная ошибка. Нужно начинать с обобщения всего в единый контекст и рефакторинга кода. Как можно говорить о чистоте сервисов, если есть такой ржавый гвоздь в коробке. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:41 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Ну ок. Я не претендую, а ищу реальный пример :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 18:55 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Рефакторинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 19:00 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Ищу реальный пример паттерна UOW реализованном через EF, поддерживающий транзакционность. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 19:10 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Fungus, ничего что реальный пример это десятки файлов? IoC, Interceptors, Attributes, UoW, Aggregate Roots, Repositories, Entities и их интерфейсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 19:14 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusСмузи, Вы конечно все хорошо пишете. Про то, что UOW есть в самом EF. Но вот по транзациям не ясно как быть. Кто их должен стартовать и потом передавать управление сервисам, работающим с репозиториям. Я уж не затрагиваю тестирование и IOC. транзакции стартует и передает тот кто работает уровнем выше, ясно же ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 19:20 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Var79, Ничего :) именно наличие реального, пусть сложного, проекта и поможет понять суть. Только рад буду именно что сложному. А то читать книги, статьи про паттерны это одно, а сварить это все вместе, в не-учебном приложении, совсем другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 19:23 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusНо сервисы это и есть бизнес логика в моем понимании. неправильное понимание ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 19:35 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Var79FungusНо сервисы это и есть бизнес логика в моем понимании. неправильное понимание FungusНу ок. Я не претендую. Я ищу реальный пример :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 19:36 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusVar79, Ничего :) именно наличие реального, пусть сложного, проекта и поможет понять суть. Только рад буду именно что сложному. А то читать книги, статьи про паттерны это одно, а сварить это все вместе, в не-учебном приложении, совсем другое. там ничего сложного нет, просто много простых объектов, например десять. допустим покажу тебе код, но на объяснения уйдет время, мне что с того будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 19:47 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Var79, По факту объяснения не нужна. Нужен просто проектик, в котором есть EF, репы, Сервисы, бизнес логика, и все это обернуто в UOW. Думаю я и без объяснений все пойму. А Вам на это будет на сок/пиво :) Если вы не против, то напишите на мою почту FungusMail@yandex.ru что бы вас устроило - в замен проекта, где применены эти интересные паттерны в боевых условиях. Мне это нужно лично самому, чтобы повысить уровень знаний. А то вот паттерны читаю, понимаю. А как все вместе, то плаваю. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 19:57 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Fungus, написал у меня в профиле есть мыло ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 20:23 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusЧто она из себя представляет и в чем ее отличие от сервисов ? бизнес логика - это и есть сервисы ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 07:00 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusЕсли приложение разбито на разные DLL, у которых свои сущности. То у этих DLL должны же быть свои собственные DbContext ? если они обращаются к разным БД. иначе зачем? пусть будет один ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 07:02 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Var79засуньте в UoW список тех DbContext-ов которые в данном вызове сервиса использует метод бизнес логики, измините код UoW что бы он пробежался по этому списку и у всех DbContext-ов сделал SaveChanges и что это за транзакция будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 07:06 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Перегонщик перекупкиFungusЧто она из себя представляет и в чем ее отличие от сервисов ? бизнес логика - это и есть сервисы тссс. меня тут чуть не побили, когда я такое сказал выше :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:44 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Перегонщик перекупкиVar79засуньте в UoW список тех DbContext-ов которые в данном вызове сервиса использует метод бизнес логики, измините код UoW что бы он пробежался по этому списку и у всех DbContext-ов сделал SaveChanges и что это за транзакция будет? Вот кстати соглашуть. Какая-то ручная транзакция. Которую нужно реализовать самому, и учесть всякие исключения. Вообще есть такое понятие как distributed transaction coordinator, может быть его можно как-то задействовать. Но все равно это будут какие-то велосипеды. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:46 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
FungusПерегонщик перекупкипропущено... и что это за транзакция будет? Вот кстати соглашуть. Какая-то ручная транзакция. Которую нужно реализовать самому... Повод задуматься над тем, а нужна-ли вообще тут транзакция. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 13:31 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Перегонщик перекупкиFungusЕсли приложение разбито на разные DLL, у которых свои сущности. То у этих DLL должны же быть свои собственные DbContext ? если они обращаются к разным БД. иначе зачем? пусть будет один авторбаза данных AdventureWorks содержит схемы для Production, Sales и HumanResources,разве не кандидаты на разные DbContext-ы ? поскольку БД одна - распределенной транзакции не будет. Вообще проще обойтись 1м DbContext, наверное, во всяком случае больше двух на практике я не встречал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 14:14 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Офтопичек. Помнится пару лет назад у "Алексей К" было полноценное приложение, которым он делился для обучения новичков: 15313352 на нем был полный пример WPF приложения.Все по феншую и MVVMую но без EF кажется. Вот хорошо бы найти где-то такое же, но для EF, UOW и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:35 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
у меня вот такой вопрос назрел по UOW. Вот такое вот решение это Service Locator? или нет? взято вот отсюда : https://metanit.com/sharp/mvc5/23.3.php Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2017, 10:24 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
Артем G, нет, это не Service Locator. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2017, 10:48 |
|
Подскажите современную реализацию Unit of Work + EF.
|
|||
---|---|---|---|
#18+
skyANAАртем G, нет, это не Service Locator. спасибо за ответ. буду знать. почитал про сервис локатор и чем-то напомнила такая реализация его. как будто бы он. кстати погуглил почему способо выше плохой и нашел вот это. Point 1 This approach leads to opaque dependencies. Point 2 This violates the Open/Closed principle. Point 3 This violates the Single Responsibility Principle. Point 4 This approach uses nominal abstraction which is semantically coupled with Entity Framework. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2017, 11:09 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1399948]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
111ms |
get tp. blocked users: |
2ms |
others: | 300ms |
total: | 525ms |
0 / 0 |