|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Изучал использования NHibernate и паттернов и в итоге пришел к такому коду, это тестовый набросок, хочу подобное использовать в одном солюшене в котором будут два проекта, один в виде сервисов, другой в виде ASP.NET MVC. Задаю вопрос с целью понять, правильно ли я понял эти паттерны, правильно ли их использовал и не лишние ли они вообще и можно было все не усложнять? Исходный код (в виде одного файла, для запуска необходимы пакеты System.Data.SQLite, NHibernate, NHibernate.Mapping.Attributes): Код: 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. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 06:36 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
SMARTi, зачем же так усложнять... почему IUnitOfWork -- бессмысленная ничего неумеющая хрень? и почему репозиторий, вдруг, решает задачи UOW? я так понимаю, то что ты назвал «Unit of Work» на самом деле переносчик болезни, т.е. заразы, т.е. ISession? как только люди паттерны не каверкают. с таким же успехом можно класс Program переименовать в UnitOfWork, а остальное обозвать как в голову взбредёт, смысл не поменяется ни на йоту. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 06:54 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
hVostt, В связи с пониманием, что я все не правильно сделал я и начал эту тему) IUnitOfWork появился в связи с тем, что мне советовали использовать интерфейсы, так же он был нужен когда я использовал EF и там нужно было сохранять изменения, так же здесь можно сделать транзакции, но сейчас я их проигнорировал для упрощения. Теперь более конкретные вопросы. А разве это не задача UnitOfWork нести в себе подключение к БД и управлять им (создавать, уничтожать)? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 10:58 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
SMARTiА разве это не задача UnitOfWork нести в себе подключение к БД и управлять им (создавать, уничтожать)?Нет. Эту задачу лучше возложить на DI-контейнер. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 11:02 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
SMARTiтак же здесь можно сделать транзакции, но сейчас я их проигнорировал для упрощенияТо есть Вы проигнорировали суть паттерна. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 11:08 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
SMARTiА разве это не задача UnitOfWork нести в себе подключение к БД и управлять им (создавать, уничтожать)?Задача UnitOfWork - отследить изменения и зафиксировать их в рамках единой транзакции, либо откатить всё. У Вас Nhibernate, там уже есть реализация ISession. Вам только нужно начать транзакцию (BeginTransaction) и реализовать Commit и Rollback. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 11:21 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Вот, нашёл: Пример реализации Unit Of Work с NHibernate . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 11:22 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
skyANAУ Вас Nhibernate, там уже есть реализация ISession. Вам только нужно начать транзакцию (BeginTransaction) и реализовать Commit и Rollback. Спасибо за ответ, я еще изучаю ту ссылку которые вы дали. Пока получилось вот так вот, это больше похоже на то что надо? Код: 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. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70.
Использование получается вот таким: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2015, 06:43 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
SMARTi, такое чувство, что Вы дочитали до первого примера кода в статье, типа что-то поняли и принялись писать свой код. Вышло у Вас совершенно не то, что нужно. Пожалуйста, прочитайте статью внимательно и полностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2015, 08:59 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
P.S.: обратите внимание, что там есть жирная ссылка на готовую реализацию UnitOfWork и Repository для NHibernate. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2015, 09:01 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
SMARTiИспользование получается вот таким: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
чёза????.... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2015, 14:30 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
hVostt, А чем плох метод SaveOrUpdate? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 10:58 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Ну вы чего? Признайтесь уже себе, что в 99.9999% никакой замены СУБД или ORM в вашем проекте и не планируется и репозитории никому не пригодятся. И что для всей CRUD-подсистемы вы может и напишете с десяток тестов -- по всем правилам, с моками и стабами -- а потом новые писать станет лень, старые покроются плесенью и будут закомментированы. А вы будете ругаться, продираясь через изо всех щелей текущие абстракции фабрик репозиториев юнит-оф-ворков с хитрыми лайфтаймами. Не надо всего этого; делайте максимально просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 11:57 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
SMARTihVostt, А чем плох метод SaveOrUpdate? Тем, что сидит в репозитории. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 13:00 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
НахлобучНе надо всего этого; делайте максимально просто. Вредные советы раздаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 13:03 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
hVosttНахлобучНе надо всего этого; делайте максимально просто. Вредные советы раздаешь? Истинно вам говорю! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 14:32 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
НахлобучПризнайтесь уже себе, что в 99.9999% никакой замены СУБД или ORM в вашем проекте и не планируется и репозитории никому не пригодятся. Весьма распространённое заблуждение, что репа нужна для замены СУБД ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 17:32 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
НахлобучПризнайтесь уже себе, что в 99.9999% никакой замены СУБД или ORM в вашем проекте и не планируется и репозитории никому не пригодятся. В чем признаваться, это тестовый проект и я просто пытаюсь научиться писать правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 19:53 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
SMARTiНахлобучПризнайтесь уже себе, что в 99.9999% никакой замены СУБД или ORM в вашем проекте и не планируется и репозитории никому не пригодятся. В чем признаваться, это тестовый проект и я просто пытаюсь научиться писать правильно. Нахлобуч все правильно говорит... Но вы же "научившись" в боевой код это потащите... бездумно... Правильно это следовать заветам Оккама... ну и помнить о принципах до сих пор модного аджайла - KISS & YAGNI ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 20:36 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
SMARTiНахлобучПризнайтесь уже себе, что в 99.9999% никакой замены СУБД или ORM в вашем проекте и не планируется и репозитории никому не пригодятся. В чем признаваться, это тестовый проект и я просто пытаюсь научиться писать правильно. Мое "воззвание" было адресовано в основном советчикам. Что касается обучения, то -- к сожалению или к счастью -- в нашей отрасли нет ничего абсолютно правильного, как, например, в физике и математике. Есть какие-то решения и подходы, являющиеся компромиссами и правильные в данном конкретном месте. Если хотите научиться, то не нужно забивать себе голову паттернами. Книжку про них почитайте, но не надо бросаться их всюду втыкать. Почитайте, осмыслите, и отложите на полку. Потом, года через три, вернётесь к ней снова. Одно из самых главных умений разработчика -- это умение есть слонов по кусочкам, то есть умение разбивать большую проблему на ряд мелких, ad infinitum. Не давайте "запрограммировать себя в угол". Не гонитесь за многомудрыми евангелистами от энтерпрайза. Не бойтесь экспериментировать и ошибаться. Старайтесь отдавать предпочтение простым решениям. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 20:57 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
buser, Нахлобуч, Ни разу с вами обоими не согласен. Призываю вас прекращать раздавать глупые советы направо и налево. А теперь поцитируем: buserНо вы же "научившись" в боевой код это потащите... бездумно... А куда ещё свои знания и опыт тащить? К бабульке на чердак? На свалку? Вы хоть перечитывайте что несёте. buserПравильно это следовать заветам Оккама... Звучит настолько же глупо, как «Правильно это поступать правильно». Бритва Оккама это хороший принцип, но в отрыве от контекста он бесполезен, и даже вреден, как нож без ручки. buserну и помнить о принципах до сих пор модного аджайла - KISS & YAGNI Самый сок в принципе KISS состоит в том, что простые вещи делаются сложно. А сложные просто. Чтобы сделать систему простой в использовании, сопровождении и поддержке -- надо постараться, это сложно. А говна накидать большой лопатой -- очень просто, с этим справится даже обезьяна. То, к чему вы призываете, звучит как -- будь тупорылой обезьяной, не нужны тебе ни паттерны, ни методики, ничего не нужно. Закатываешь рукава и начинаешь говнокодить. Индусы же могут? МОжешь и ты НахлобучЕсли хотите научиться, то не нужно забивать себе голову паттернами. Книжку про них почитайте, но не надо бросаться их всюду втыкать. Почитайте, осмыслите, и отложите на полку. Потом, года через три, вернётесь к ней снова. Бред. Для начала разберись с тем, что вообще такое «паттерн». Я подскажу, паттерн -- это выработанные годами, готовые, решения распространённых задач и проблем. А вы призываете человека отказаться от них в пользу... чего? Типа если ты хочешь научиться готовить, не надо тебе пользоваться рецептами -- это ПЛОХО! Ну книжку там конечно прочитай, но не стоит им следовать и готовить по рецептам, так что ли? Паттерны -- это одно из самых первых, что должен освоить программист. И пускай в начале не будет получаться использовать их в меру и по уму, это всего лишь вопрос опыта, не более того. Отказавшись от изучения паттернов, программист обречён открывать америку множество раз, бессмысленно растрачивая своё время. НахлобучОдно из самых главных умений разработчика -- это умение есть слонов по кусочкам, то есть умение разбивать большую проблему на ряд мелких, ad infinitum. Не давайте "запрограммировать себя в угол". Не гонитесь за многомудрыми евангелистами от энтерпрайза. Не бойтесь экспериментировать и ошибаться. Старайтесь отдавать предпочтение простым решениям. Много слов и ни о чём. Какие ещё евангелисты, какие простые решения? Паттерны --- это И ЕСТЬ ГОТОВЫЕ ПРОСТЫЕ РЕШЕНИЯ В общем, не включайте философов, спуститесь на грешную землю. Сами говорите о простоте и тут же растекаетесь в какие-то филосовские словоформы, говоря сразу обо всём, и ни о чём. Т.е. не помогаете человеку вообще ни чем. Никакой конкретики. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 21:48 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
hVosttНахлобучНе надо всего этого; делайте максимально просто. Вредные советы раздаешь? на git что-ли переходить? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 23:54 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
skyANAна git что-ли переходить? Угу ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 01:10 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
НахлобучНу вы чего? Признайтесь уже себе, что в 99.9999% никакой замены СУБД или ORM в вашем проекте и не планируется и репозитории никому не пригодятся. И что для всей CRUD-подсистемы вы может и напишете с десяток тестов -- по всем правилам, с моками и стабами -- а потом новые писать станет лень, старые покроются плесенью и будут закомментированы. А вы будете ругаться, продираясь через изо всех щелей текущие абстракции фабрик репозиториев юнит-оф-ворков с хитрыми лайфтаймами. Не надо всего этого; делайте максимально просто.+123 Переезд на другую СУБД в перспективе можно ещё допустить, но тут EF может сильно помочь сделать легко переносимое решение. Переезд на другой ORM - это уже за пределами разумного. Ладно ещё, если бы EF не реализовывал UoW, но он реализует. А тестирование можно организовать и поверх EF, подсунув ему тестовую БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 08:42 |
|
|
start [/forum/topic.php?fid=17&msg=39026868&tid=1349511]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
317ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 669ms |
0 / 0 |