|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Ну и конечно всё должно быть Async ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 10:01 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaДругими словами, это BLL должен быть реализован отдельно от БД через какой-то уровень абстракции, например через паттерн Repository. Так? Да, всё верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 10:45 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
skyANAНу и конечно всё должно быть Async ja, ja, das ist fantastisch! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 10:47 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
skyANA, Склонен несогласиться с вами, потому что с такой реализацией успешно справляется сам DbContext, он это реализуте "из коробки". При таком раскладе Ваш Repository лишнее промежуточное звено. Поэтому, я предпочитаю кое-что добавлять в реализацию репозитория, чтобы было более полезно. Например, Mapping или Pagination. Даже сделал пару пакетов Calabonga.EntityFramework и Calabonga.EntityFrameworkCore более того, описал это в другой статье . С другой стороны, сколько людей, столько и мнений. Весьма признателен вам, что уделили своё драгоценное внимание. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 11:22 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
skyANA, авторЯ бы Вам посоветовал почитать про Domain Driven Design. Думаю, что Вам будет интересно. https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577 Спасибо, я обязательно почитаю. Может чего нового найду. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 11:23 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
skyANAПример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Код: 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.
Это нормальный репозиторий. Суть в том что можно переписать для другого ApplicationDbContext. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 11:35 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaskyANA, Склонен несогласиться с вами, потому что с такой реализацией успешно справляется сам DbContext, он это реализуте "из коробки". При таком раскладе Ваш Repository лишнее промежуточное звено. Поэтому, я предпочитаю кое-что добавлять в реализацию репозитория, чтобы было более полезно. Например, Mapping или Pagination. Даже сделал пару пакетов Calabonga.EntityFramework и Calabonga.EntityFrameworkCore более того, описал это в другой статье . С другой стороны, сколько людей, столько и мнений. Весьма признателен вам, что уделили своё драгоценное внимание. Спасибо. Суть репозитория в том, что он скрывает за собой хранилище. То есть это может быть и SQL Server, и MongoDB, и Couchbase, и сторонний сервис, и вообще несколько хранилишь последовательно, или параллельно. У Вас же это выходит не репозиторий, а обёртка над EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 11:50 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Calabongaон это реализуте "из коробки".+1 CalabongaПоэтому, я предпочитаю кое-что добавлять в реализацию репозитория, чтобы было более полезно. Например, Mapping или Paginationну дак и это есть в NuGet маленькой добавочкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 11:52 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
ViPRosЭто нормальный репозиторий. Суть в том что можно переписать для другого ApplicationDbContext.ты с EF не работал, поэтому все переписываешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 11:53 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
skyANACalabongaskyANA, Склонен несогласиться с вами, потому что с такой реализацией успешно справляется сам DbContext, он это реализуте "из коробки". При таком раскладе Ваш Repository лишнее промежуточное звено. Поэтому, я предпочитаю кое-что добавлять в реализацию репозитория, чтобы было более полезно. Например, Mapping или Pagination. Даже сделал пару пакетов Calabonga.EntityFramework и Calabonga.EntityFrameworkCore более того, описал это в другой статье . С другой стороны, сколько людей, столько и мнений. Весьма признателен вам, что уделили своё драгоценное внимание. Спасибо. Суть репозитория в том, что он скрывает за собой хранилище. То есть это может быть и SQL Server, и MongoDB, и Couchbase, и сторонний сервис, и вообще несколько хранилишь последовательно, или параллельно. У Вас же это выходит не репозиторий, а обёртка над EF. ну и что? как только надо будет обернуть что то другое он напишет другую реализацию ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 11:54 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Petro123ViPRosЭто нормальный репозиторий. Суть в том что можно переписать для другого ApplicationDbContext.ты с EF не работал, поэтому все переписываешь. когда ж ты научишься? такое впечатление, что какой-то небольшой барьер не можешь преодолеть как только перескочишь сразу левел будет другой ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 11:58 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Calabonga, и мой пример был про то, что TagRepository и Provider не имеют смысла. Вполне можно ограничиться PostRepository : Repository<Post> , либо вообще DbContext, но тогда возникает жёсткая зависимость от EF. Post - это корень агрегации, сущность (Entity). И при её сохранении EF отобразит её на все нужные таблицы, на то EF и ORM ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 11:59 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
ViPRos, Ты helloWorld сайт написал? А че за советы? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:00 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
ViPRosskyANAпропущено... Суть репозитория в том, что он скрывает за собой хранилище. То есть это может быть и SQL Server, и MongoDB, и Couchbase, и сторонний сервис, и вообще несколько хранилишь последовательно, или параллельно. У Вас же это выходит не репозиторий, а обёртка над EF. ну и что? как только надо будет обернуть что то другое он напишет другую реализацию Он написал: "При таком раскладе Ваш Repository лишнее промежуточное звено". Позволь спросить, если он выкинет это звено, то другую реализацию чего он напишет, DbContext что-ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:01 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
skyANA, Мне показалось, что ты сказал что это пример "неправильного" репозитория. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:03 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
skyANAСуть репозитория в том, что он скрывает за собой хранилище. Я бы сказал больше, он скрывает за собой хранилище, и особенности хранения данных в данном хранилище, которые скрываются слоем доступа к данным. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:29 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
[quot skyANA]CalabongaskyANA, Суть репозитория в том, что он скрывает за собой хранилище. То есть это может быть и SQL Server, и MongoDB, и Couchbase, и сторонний сервис, и вообще несколько хранилишь последовательно, или параллельно. У Вас же это выходит не репозиторий, а обёртка над EF. Репозиторий - как абстракция на доступ к БД (DAL). Его задача отвязаться от конкретной БД. То есть вашему репозиторию должно быть абсолютно фиалетово, к какой базе данных цепляться (MS SQL, PostgreSQL, SqlLite, Oracle, InMemory, etc). Таким образом, EntityFramework делает тоже самое только на основании набора Provider'ов. Именно поэтому я и говорю, что ваша реализация просто дублирует функционал, который уже делает EntityFramework. И я считаю, что в этом очень мало смысла. Поэтому я в свой репозиторий привнес немного больше обязанностей, как то: Mapping, Pagination and Secutiry (в частности, Row Level Security). И, собственно говоря, можно сказать, что моя реализация - это "Надстройка на EntityFramework" ибо просто Repository уже в EntityFramework реализован. P.S.: Кстати сказать, при использовании DI-контейнера паттерн Unit Of Work тоже не имеет смысла в силу того, что контейнер реализует его функционал на 100%. Но вы можете привнести своё видение в этот паттерн, и у вас будет своя обёртка. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:33 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
hVosttskyANAСуть репозитория в том, что он скрывает за собой хранилище. Я бы сказал больше, он скрывает за собой хранилище, и особенности хранения данных в данном хранилище, которые скрываются слоем доступа к данным. Скорее такого шаблона просто нет, это частный случай враппера. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:35 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
А общее правило вырисовывается в виде "оборачивай все то, что не твое или твое, но может измениться". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:37 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
ViPRosСкорее такого шаблона просто нет, это частный случай враппера. Вовсе нет. Просто когда от репозитория хотят: фильтрацию, пейджинг, поиск, ковыряние в данных... тогда абстракция начинает плыть и рождаются уродливые год обжекст. Нужны либо спецификации, либо квери обжект, тогда всё будет путём. Не нужно из репозитория возвращать IQueryable. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:37 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
ViPRosА общее правило вырисовывается в виде "оборачивай все то, что не твое или твое, но может измениться". Нет, это как сказать, глядя на работу хирурка, режь, режь всё что попадётся под руку ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:38 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
hVostt, возвращать в общем случае надо либо явно свое, либо системное ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:39 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
hVostt, зато ни один гад не сможет сказать что писал не по паттернам :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:42 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
IQuerable можно возвращать - это часть NET ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 12:43 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaПоэтому я в свой репозиторий привнес немного больше обязанностей, как то: Mapping, Pagination and Secutiry (в частности, Row Level Security). А где он? Твой? Документация? Примеры? Мы то про триггер, то про ОРМ то про паттерн. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 13:02 |
|
|
start [/forum/topic.php?fid=18&msg=39652356&tid=1355206]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 456ms |
0 / 0 |