powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / IRepository как пользоваться
25 сообщений из 238, страница 5 из 10
IRepository как пользоваться
    #38414773
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA1. Поднимать DbContext в начале запроса, убивать в конце;Чтобы избежать нежелательных распределённых транзакций и иметь возможность возвращать из методов IQueryable, временем жизни контекста лучше управлять через ThreadStatic + счётчик ссылок.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414782
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Вы определение репозитория забыли, или Вы с ним не согласны?Тут с этими определениями кто во что горазд.

repository == data access layerRepositoryA Repository mediates between the domain and data mapping layers, acting like an in-memory domain object collection. Client objects construct query specifications declaratively and submit them to Repository for satisfaction. Objects can be added to and removed from the Repository, as they can from a simple collection of objects, and the mapping code encapsulated by the Repository will carry out the appropriate operations behind the scenes. Conceptually, a Repository encapsulates the set of objects persisted in a data store and the operations performed over them, providing a more object-oriented view of the persistence layer. Repository also supports the objective of achieving a clean separation and one-way dependency between the domain and data mapping layers.
Алексей КЕсли доступ к данным будет содержать методы вроде GetXXXByID, при реализации слоя логики N+1 неизбежен.Если до конца понимать суть шаблона, то откуда какая-то логика N+1?
Если доступ к данным содержит только методы вроде GetXXXByID, то возможноть "Client objects construct query specifications declaratively and submit them to Repository for satisfaction" не реализована. То есть репозиторий тупо не предоставляет тот функционал, что должен (мог бы) предоставлять исходя из определения.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414790
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕсли доступ к данным содержит только методы вроде GetXXXByID, то возможноть "Client objects construct query specifications declaratively and submit them to Repository for satisfaction" не реализована.

System.LINQ.Expression == query specifications

следовательно:

DbContext == Repository

Все эти определения появились до появления LINQ2SQL. С его выходом всё поменялось. Просто не все ещё это заметили. :-)

Если кому-то в проекте требуется репозитарий поверх репозитария - я не против. Но мне это не надо. :-)

skyANAТо есть репозиторий тупо не предоставляет тот функционал, что должен (мог бы) предоставлять исходя из определения.Зачем реализовывать самому функционал, имеющийся в LINQ2SQL? Велосипедостроение тоже должно иметь разумные пределы. :-)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414799
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAЕсли доступ к данным содержит только методы вроде GetXXXByID, то возможноть "Client objects construct query specifications declaratively and submit them to Repository for satisfaction" не реализована.

System.LINQ.Expression == query specifications

следовательно:

DbContext == Repository

Все эти определения появились до появления LINQ2SQL. С его выходом всё поменялось. Просто не все ещё это заметили. :-)
Вот так просто взял и нарушил концепцию Persistence Ignorance.RepositoryConceptually, a Repository encapsulates the set of objects persisted in a data store and the operations performed over them, providing a more object-oriented view of the persistence layer.
Алексей КЕсли кому-то в проекте требуется репозитарий поверх репозитария - я не против. Но мне это не надо. :-)Кому-то требуется полноценный репозиторий
Алексей КskyANAТо есть репозиторий тупо не предоставляет тот функционал, что должен (мог бы) предоставлять исходя из определения.Зачем реализовывать самому функционал, имеющийся в LINQ2SQL? Велосипедостроение тоже должно иметь разумные пределы. :-)Затем, что на прошлой работе данные о забранированном туре были распределены между основным хранилищем системы и конечными точками: поставщиками отелей, перелётов, трансфер, экскурсий и т.п. Интерфейс к основному хранилищу и конечным точкам был единый, а вот реализации разные. И как-то сложно было применять LINQ2SQL к данным в формате XML даже тогда, когда перешли с .Net 2.0 на .Net 3.5.

Затем что на текущей работе два хранилища: MS SQL Server и MongoDB, - и MS что-то пока не реализовала EF под MongoDB. А кэшируются они в memcached, что является key-value хранилищем, к которому писать IQueryProvider как-то глупо что-ли.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414805
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...


System.LINQ.Expression == query specifications

следовательно:

DbContext == Repository

Все эти определения появились до появления LINQ2SQL. С его выходом всё поменялось. Просто не все ещё это заметили. :-)
Вот так просто взял и нарушил концепцию Persistence Ignorance.RepositoryConceptually, a Repository encapsulates the set of objects persisted in a data store and the operations performed over them, providing a more object-oriented view of the persistence layer.
Вроде тоже правильно:
авторConceptually, a Repository LINQ DbContext encapsulates the set of objects persisted in a data store and the operations performed over them, providing a more object-oriented view of the persistence layer.

skyANAАлексей КЕсли кому-то в проекте требуется репозитарий поверх репозитария - я не против. Но мне это не надо. :-)Кому-то требуется полноценный репозиторий
Алексей Кпропущено...
Зачем реализовывать самому функционал, имеющийся в LINQ2SQL? Велосипедостроение тоже должно иметь разумные пределы. :-)Затем, что на прошлой работе данные о забранированном туре были распределены между основным хранилищем системы и конечными точками: поставщиками отелей, перелётов, трансфер, экскурсий и т.п. Интерфейс к основному хранилищу и конечным точкам был единый, а вот реализации разные. И как-то сложно было применять LINQ2SQL к данным в формате XML даже тогда, когда перешли с .Net 2.0 на .Net 3.5.

Затем что на текущей работе два хранилища: MS SQL Server и MongoDB, - и MS что-то пока не реализовала EF под MongoDB. А кэшируются они в memcached, что является key-value хранилищем, к которому писать IQueryProvider как-то глупо что-ли.Я уже пояснял, что рассматриваю случай с одной SQL БД. Если баз много - там всё очевидно, обсуждать нечего.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414817
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЯ уже пояснял, что рассматриваю случай с одной SQL БД. Если баз много - там всё очевидно, обсуждать нечего.И что? Репозиторий должен обеспечивать работу с данными как с in-memory domain object collection, как бы последние не были распределены.
То что Вы при проектировании поддержку этого требования опустили из-за того, что у Вас случай с одной SQL БД, не даёт Вам оснований приравнивать DbContext к репозиторию.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414835
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,автор на прошлой работе данные о забранированном туре были распределены между основным хранилищем системы и конечными точками: поставщиками отелей, перелётов, трансфер, экскурсий и т.п.
Вы что работу поменяли?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414977
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей КЯ уже пояснял, что рассматриваю случай с одной SQL БД. Если баз много - там всё очевидно, обсуждать нечего.И что?И всё. :-)

skyANAРепозиторий должен обеспечивать работу с данными как с in-memory domain object collection, как бы последние не были распределены.В DbContext такой API присутствует.

skyANAТо что Вы при проектировании поддержку этого требования опустили из-за того, что у Вас случай с одной SQL БД, не даёт Вам оснований приравнивать DbContext к репозиторию. Не понял, где я чего опустил.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415042
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANA1. Поднимать DbContext в начале запроса, убивать в конце;Чтобы избежать нежелательных распределённых транзакций и иметь возможность возвращать из методов IQueryable, временем жизни контекста лучше управлять через ThreadStatic + счётчик ссылок.
Ужос... А у меня нечерезжопное нормальное решение: репозиторий как IDisposable, где в методе Dispose честно прибивается датаконтекст или иной диспосабельный ресурс. Всё в рамках классики без соплей и гадостей.

Алексей КDbContext == Repository
В каком-то приближени, да. Но не совсем, т.к. датаконтекст - это реляционное отображение данных БД (ORM), а репозиторий - посредник между уровнями области определения и распределения данных (domain and data mapping layers), используя интерфейс, схожий с коллекциями для доступа к объектам области определения.

Алексей КЯ уже пояснял, что рассматриваю случай с одной SQL БД. Если баз много - там всё очевидно, обсуждать нечего.
Слушай, ну бизнес так неоднороден и расплывчат, как можно закладываться только под БД? Ну а если сейчас БД, а завтра нужно через веб сервис протащить коллекцию из абаперской RFCFunction?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415292
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиВы что работу поменяли?Уже год и десять месяцев как поменял. Ссылка на текущий проект в профиле.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415300
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСлушай, ну бизнес так неоднороден и расплывчат, как можно закладываться только под БД? Ну а если сейчас БД, а завтра нужно через веб сервис протащить коллекцию из абаперской RFCFunction?Алексей КВ DbContext такой API присутствует.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415364
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAГде-то в степиВы что работу поменяли?Уже год и десять месяцев как поменял. Ссылка на текущий проект в профиле.
мда.., как быстро летит время (((
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415466
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЯ уже пояснял, что рассматриваю случай с одной SQL БД. Если баз много - там всё очевидно, обсуждать нечего.
Слушай, ну бизнес так неоднороден и расплывчат, как можно закладываться только под БД? Ну а если сейчас БД, а завтра нужно через веб сервис протащить коллекцию из абаперской RFCFunction?А если завтра это будет не нужно? А оно медленно работает уже сегодня.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415468
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зануды...
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415579
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА если завтра это будет не нужно?
Так я же уже писал про непредсказуемость бизнеса и про то, что ты изначально прибиваешь свою архитектуру жирными гвоздями к доске. Не понимаю смысла в этом. Да еще и какую-то жесть с "ThreadStatic + счётчик ссылок" реализовывать.

Алексей КА оно медленно работает уже сегодня.
Ты о чем? Что в репозитории работает медленно? :)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415621
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КА оно медленно работает уже сегодня.
Ты о чем? Что в репозитории работает медленно? :)N+1

Мы ходим по кругу. :-)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415642
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

Ты о чем? Что в репозитории работает медленно? :)N+1

Мы ходим по кругу. :-)То есть у N+1 у вас уже сегодня работает? Или у кого оно работает?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415654
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще логика конечно железная: у нас одна БД и завтра ничего не изменится, поэтому и у вас проблем нет и не будет, и не может быть.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415684
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КN+1
Мы ходим по кругу. :-)
14913953 :)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415694
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВообще логика конечно железная: у нас одна БД и завтра ничего не изменится, поэтому и у вас проблем нет и не будет, и не может быть. Иногда лучше решать проблемы по мере их поступления.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415733
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КN+1
Мы ходим по кругу. :-)
14913953 :) 14918949
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415736
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAВообще логика конечно железная: у нас одна БД и завтра ничего не изменится, поэтому и у вас проблем нет и не будет, и не может быть. Иногда лучше решать проблемы по мере их поступления.Спасибо КЭП.

А иногда полезно думать до и во время проектирования системы и смотреть, что вокруг-то происходит и пользоваться своим и чужим опытом, чтобы избежать лишних проблем.

Также полезно внимательно читать, что пишут:Проблемы при использовании шаблона RepositoryКак любой другой шаблон проектирования, Repository имеет множество интерпретаций и реализаций. Вообще, когда речь идет о проектировании, то сложно отделить абсолютно правильное решение от полностью неправильного. Обычно говорят, что всё зависит от ситуации. С другой стороны, в блогах и статьях попадаются решения, в которых авторы нарушают принципы проектирования или предлагают реализации с явными проблемами. Я собрал такие способы использования шаблона Repository, для того чтобы обратить внимание на возможные проблемы их применения.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415746
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

14913953 :) 14918949 14914378
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415750
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей К 14918949 14914378
14911778
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415760
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА иногда полезно думать до и во время проектирования системы и смотреть, что вокруг-то происходит и пользоваться своим и чужим опытом, чтобы избежать лишних проблем.Главное - иметь своё мнение. И если оно отличается от мнения большинства, это ещё не значит, что оно неправильное. Ну да Бог с ней, с философией... :-)

Если по теме - хочется обсудить архитектуру, ориентированную на конкретную СУБД + EF + максимальная производительность. Повторюсь, обсуждать тривиальные вещи, которые нынче модно называть репозитарием, мне не интересно. Там всё очевидно.
...
Рейтинг: 0 / 0
25 сообщений из 238, страница 5 из 10
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / IRepository как пользоваться
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]