|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем GПросмотрел кучу инет страниц об UnitOfWork что DbContext, что ISession - это уже UnitOfWork. оболочка над ними, думаю, лишнее ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2016, 11:45 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем G, Unit Of Work это бизнес-транзакция. Если реализация отвечает этому требованию, всё ок. Save или Commit в бизнес-транзакции не обязательно только сохраняет данные в БД, могут выполняться и другие действия. Поэтому связывать Unit of Work и репозиторием -- неправильно, они должны быть независимые. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2016, 13:42 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Иммануил Кантчто DbContext, что ISession - это уже UnitOfWork. оболочка над ними, думаю, лишнее DbContext реализует паттерн UOW, но не является полной бизнес-транзакцией. Если, например, выполнять SQL команду через DbContext, то транзакция на уровне контекста не будет обеспечена. Следовательно считать его полноценным UOW — нельзя, и требуется своя реализация поверх или с использованием DbContext. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2016, 13:44 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем G Код: c# 1. 2. 3. 4. 5.
И где Вы такие странные примеры находите? Смотрим Фаулера : Смотрим MSDN : Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Смотрим пример реализации на их основе . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2016, 13:55 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
skyANA, А не где нельзя увидеть реализацию методов и их применение ? По ссылкам этого нет ( В инете ни чего подобного не встречал... Может Вы можете поделиться ссылкой на удачную статью / пример? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 00:14 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Пожалуйста не могли бы вы взглянуть на вариант вот по этой ссылке Там второй пример для EF. Это реализовано по Фаулеру? Смущает класс ContextFactory, который содержит следующую строчку Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 00:27 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем GПожалуйста не могли бы вы взглянуть на вариант вот по этой ссылке Там второй пример для EF. Это реализовано по Фаулеру? Смущает класс ContextFactory, который содержит следующую строчку Код: c# 1.
какая-то бесполезная прослойка ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2016, 17:30 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
skyANAАртем G Код: c# 1. 2. 3. 4. 5.
И где Вы такие странные примеры находите? Смотрим Фаулера : Смотрим MSDN : Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Смотрим пример реализации на их основе . при такой реализации Unit Of Work в репозиториях не требуется реализация add, edit, delete? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2016, 01:09 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем Gпри такой реализации Unit Of Work в репозиториях не требуется реализация add, edit, delete?С чего Вы это взяли? Вы так и не поняли для чего нужен Repository, а для чего UnitOfWork? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2016, 10:05 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
hVostt DbContext реализует паттерн UOW, но не является полной бизнес-транзакцией. Если, например, выполнять SQL команду через DbContext, то транзакция на уровне контекста не будет обеспечена. Следовательно считать его полноценным UOW — нельзя, и требуется своя реализация поверх или с использованием DbContext. Почему это не будет? Для каждой атомарной команды будет одна неявная транзакция. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2016, 11:28 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
skyANAАртем Gпри такой реализации Unit Of Work в репозиториях не требуется реализация add, edit, delete?С чего Вы это взяли? Вы так и не поняли для чего нужен Repository, а для чего UnitOfWork? Я пытаюсь разобраться... вариантов в интернете с десяток ... разобраться какие из них наиболее верные нужно положить 1 человеку кучу сил / времени. Я 1. Мне не кому подсказать. Единственное место - это вот этот форум. Далее по проблеме. Спорить с Мартином я не буду. Говорит что нужно так значит так. Смотрю на UML Мартина и начинаю гуглить реализацию. Единственное на что наткнулся вот на эту статью: линк . Она ближе всех. В спойлерах тоже самое что по линку, но на моем проекте. 1 При таком вот подходе смысл иметь add, edit, remove в репозитории отпадает напрочь. 2. Нужны Ваши коментарии, что ни так. 3. Мне бы боевой пример на одном классе ... потому как сам я до пенсии правильного решения не найду (( Service Код: 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.
UoW Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2016, 12:54 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
hVosttАртем G, Unit Of Work это бизнес-транзакция. Если реализация отвечает этому требованию, всё ок. Save или Commit в бизнес-транзакции не обязательно только сохраняет данные в БД, могут выполняться и другие действия. Поэтому связывать Unit of Work и репозиторием -- неправильно, они должны быть независимые. hVostt, посмотрите пожалуйста, то что у меня под спойлерами в предыдущем посте. Сейчас у меня в примере UoW не содержит репозиториев, а в Service видно как используется репозиторий и UoW. Я был бы очень признателен если бы Вы ответили в правильном ли я направлении двигаюсь + любые замечания приветствуются :). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2016, 18:42 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем G, Забей, тебе сам Фаулер не ответит, либо даст такой расплывчатый ответ, что сам тот кто его сподвиг на все это не поймет. Писать всякие книжки - его хлеб, он в бренде, покупают. P. S. нафига очищать листы в Rollback? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2016, 21:02 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
ЕвгенийВАртем G, Забей, тебе сам Фаулер не ответит, либо даст такой расплывчатый ответ, что сам тот кто его сподвиг на все это не поймет. Писать всякие книжки - его хлеб, он в бренде, покупают. P. S. нафига очищать листы в Rollback? В сервисе заполняется registredNew Код: c# 1. 2.
Код: c# 1. 2. 3. 4.
Код: c# 1.
Если коммит то Код: c# 1. 2.
Если эксепшен то список registredNew чистится. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2016, 21:42 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем GЕсли эксепшен то список registredNew чистится. И потом используется еще раз? А если не exeption то не чистится и используется еще раз? Чем это отличается от добавления просто в dbContext.Entry? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2016, 21:55 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
ЕвгенийВАртем GЕсли эксепшен то список registredNew чистится. И потом используется еще раз? А если не exeption то не чистится и используется еще раз? Чем это отличается от добавления просто в dbContext.Entry? Да согласен, можно списки убрать. Нужно будет подумать только как делать RollBack. Вот видете даже в простых вещах выложено не продуманно / криво. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 00:41 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Артем GНужно будет подумать только как делать RollBack. Код: c# 1. 2. 3. 4.
зы: Откуда такое непреодолимое желание иметь независимость прикладного кода от EF? Неужели вероятность отказа от EF настолько высока? В противном случае накой это всё надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 09:26 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Или так: Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 09:27 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Алексей Кзы: Откуда такое непреодолимое желание иметь независимость прикладного кода от EF? Неужели вероятность отказа от EF настолько высока? В противном случае накой это всё надо? 1. Для тестирования 2. Для гибкости (не всё в последствии может храниться в одной SQL базе данных) 3. Для расширения (между EF и репой можно организовать свой слой умного кеша) 4. Абстрагирование от способа хранения данных улучшает архитектуру на порядки 5. Возможность заменить EF на другой ORM в критических к производительности местах, например, на Dapper 6. Для масштабирования Но для простых приложений на уровне лабораторных работ с одним разработчиком, можно использовать EF напрямую, и не задумываться об архитектуре. Как говориться, нет смысла для собачей будки привлекать инженеров и рисовать чертежи. Взял молоток, гвозди -- и вперёд. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 09:52 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
hVosttАлексей Кзы: Откуда такое непреодолимое желание иметь независимость прикладного кода от EF? Неужели вероятность отказа от EF настолько высока? В противном случае накой это всё надо? 1. Для тестирования 2. Для гибкости (не всё в последствии может храниться в одной SQL базе данных) 3. Для расширения (между EF и репой можно организовать свой слой умного кеша) 4. Абстрагирование от способа хранения данных улучшает архитектуру на порядки 5. Возможность заменить EF на другой ORM в критических к производительности местах, например, на Dapper 6. Для масштабирования Но для простых приложений на уровне лабораторных работ с одним разработчиком, можно использовать EF напрямую, и не задумываться об архитектуре. Как говориться, нет смысла для собачей будки привлекать инженеров и рисовать чертежи. Взял молоток, гвозди -- и вперёд.Да ты "Эффективный архитектор 80 LVL", не меньше! А ещё есть мнение, что проще всего наплодить безумных архитектурных решений, а ту же систему в простой и прозрачной архитектуре реализовать гораздо сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 11:32 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Алексей КДа ты "Эффективный архитектор 80 LVL", не меньше! А ещё есть мнение, что проще всего наплодить безумных архитектурных решений, а ту же систему в простой и прозрачной архитектуре реализовать гораздо сложнее. Любую архитектурную проблему можно решить введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества абстрактных слоев! (С) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 11:47 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
hVostt5. Возможность заменить EF на другой ORM в критических к производительности местах, например, на Dapper Тут правильней сразу смотреть в сторону старого доброго датаридера и ручного маппинга. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 12:31 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
Алексей Кв простой и прозрачной архитектуре буттон_клик? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 12:31 |
|
Repository & Service
|
|||
---|---|---|---|
#18+
ЕвгенийВhVostt5. Возможность заменить EF на другой ORM в критических к производительности местах, например, на Dapper Тут правильней сразу смотреть в сторону старого доброго датаридера и ручного маппинга. а потом написать самодельный ОРМ, который потом заменить на нормальный. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 12:33 |
|
|
start [/forum/topic.php?fid=20&msg=39188805&tid=1400730]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 157ms |
0 / 0 |