powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / IRepository как пользоваться
25 сообщений из 238, страница 6 из 10
IRepository как пользоваться
    #38415820
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КГлавное - иметь своё мнение. И если оно отличается от мнения большинства, это ещё не значит, что оно неправильное. Ну да Бог с ней, с философией... :-)
Мнение большинства: биться о бетонную стену головой опасно.
Мнение Васи Кожевникова (сисадмин в головной компании РЖД): всё это хрень, биться головой о бетонную стену можно и нужно - прояснение ума и осознание истинного бытия.

Алексей КЕсли по теме - хочется обсудить архитектуру, ориентированную на конкретную СУБД + EF + максимальная производительность.
Я так и не понял, почему у репозитория с IEnumerable хуже производительность, чем с IQueryable
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415846
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAА иногда полезно думать до и во время проектирования системы и смотреть, что вокруг-то происходит и пользоваться своим и чужим опытом, чтобы избежать лишних проблем.Главное - иметь своё мнение. И если оно отличается от мнения большинства, это ещё не значит, что оно неправильное. Ну да Бог с ней, с философией... :-)Аргументы в пользу Вашего мнения - это то, что у вас одна SQL БД и завтра это не изменится. При таких условиях сложно сказать, что Ваше мнение неправильное.
Но реальность не ограничивается лишь Вашим случаем.
Алексей КЕсли по теме - хочется обсудить архитектуру, ориентированную на конкретную СУБД + EF + максимальная производительность. Повторюсь, обсуждать тривиальные вещи, которые нынче модно называть репозитарием, мне не интересно. Там всё очевидно.Ну то есть архитектуру конкретной реализации. И что конкретно Вы хотите обсудить?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415847
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЕсли по теме - хочется обсудить архитектуру, ориентированную на конкретную СУБД + EF + максимальная производительность.
Я так и не понял, почему у репозитория с IEnumerable хуже производительность, чем с IQueryable А я не понял, почему проигнорирован мой ответ , доказывающий несостоятельность автора упомянутого блога.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415851
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примкну к Алексей К

1) Нужно держать живым дата контекст на протяжении более длительного времени. Это плохая практика.

Web, WCF - per call; Winforms, WPF - время жизни окна. Что в этом плохого?

2) "Крутить базу может кто как хочет" (с) Это сеет хаос и демократию прикладного кода, в отличие от строго специфицированных репозиториев.

UI - BL (сервисы) - DAL (репозитории). В сервисах работать с IQueryable, наружу отдавать IEnumerable. Кручу только я сам как хочу. Что в этом плохого?

3) И самая главная причина: зависимость от MSSQL + EF. Изменится источник или хранилище данных - приплыли.
Вот этого совсем не понял.
Код: c#
1.
2.
3.
4.
        public IQueryable<T> Query()
        {
            return new List<T>().AsQueryable();
        }
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415855
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Главное - иметь своё мнение. И если оно отличается от мнения большинства, это ещё не значит, что оно неправильное. Ну да Бог с ней, с философией... :-)Аргументы в пользу Вашего мнения - это то, что у вас одна SQL БД и завтра это не изменится. При таких условиях сложно сказать, что Ваше мнение неправильное.
Но реальность не ограничивается лишь Вашим случаем.А я и не утверждаю, что это решение универсальное, и должно применяться повсюду и всеми. В отличие от некоторых любителей репозитариев. :-)

skyANAАлексей КЕсли по теме - хочется обсудить архитектуру, ориентированную на конкретную СУБД + EF + максимальная производительность. Повторюсь, обсуждать тривиальные вещи, которые нынче модно называть репозитарием, мне не интересно. Там всё очевидно.Ну то есть архитектуру конкретной реализации. И что конкретно Вы хотите обсудить?Теперь не знаю. :-)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415858
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerP1983Winforms, WPF - время жизни окна.Я бы тут даже сократил до времени вызова ButtonClick.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415865
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

Я так и не понял, почему у репозитория с IEnumerable хуже производительность, чем с IQueryable А я не понял, почему проигнорирован мой ответ , доказывающий несостоятельность автора упомянутого блога.А Вы проигнорировали вопрос о том, как это поможет исключить дублирования логики запросов?
Наружу торчит IQueryable. Кто мне запретит обращаться к нему, где хочу и как хочу, а не в одном месте?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415871
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSerP1983Winforms, WPF - время жизни окна.Я бы тут даже сократил до времени вызова ButtonClick.

Зависит от ситуации. Если взять супер-пупер асинхронный грид у девэкпресса (позволяет при скроле подгружать данные), то для него нужен датаконтекст на все время жизни этого грида, что, скорее всего, равно времени жизни формы.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415875
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Аргументы в пользу Вашего мнения - это то, что у вас одна SQL БД и завтра это не изменится. При таких условиях сложно сказать, что Ваше мнение неправильное.
Но реальность не ограничивается лишь Вашим случаем.А я и не утверждаю, что это решение универсальное, и должно применяться повсюду и всеми. В отличие от некоторых любителей репозитариев. :-)Покажите-ка, где конкретно "любители репозиториев" утверждали, что их решение универсальное.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415877
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerP19833) И самая главная причина: зависимость от MSSQL + EF. Изменится источник или хранилище данных - приплыли.
Вот этого совсем не понял.
Код: c#
1.
2.
3.
4.
        public IQueryable<T> Query()
        {
            return new List<T>().AsQueryable();
        }

И что демонстрирует Ваш код? Вы предлагаете для начала выбрать все данные в List<T>?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415879
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
А я не понял, почему проигнорирован мой ответ , доказывающий несостоятельность автора упомянутого блога.А Вы проигнорировали вопрос о том, как это поможет исключить дублирования логики запросов?
Наружу торчит IQueryable. Кто мне запретит обращаться к нему, где хочу и как хочу, а не в одном месте? 14913302

Так же ничто не мешает сделать 18 репозитариев с дублирующейся логикой.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415882
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerP1983Алексей Кпропущено...
Я бы тут даже сократил до времени вызова ButtonClick.

Зависит от ситуации. Если взять супер-пупер асинхронный грид у девэкпресса (позволяет при скроле подгружать данные), то для него нужен датаконтекст на все время жизни этого грида, что, скорее всего, равно времени жизни формы.Ок.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415883
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANASerP19833) И самая главная причина: зависимость от MSSQL + EF. Изменится источник или хранилище данных - приплыли.
Вот этого совсем не понял.
Код: c#
1.
2.
3.
4.
        public IQueryable<T> Query()
        {
            return new List<T>().AsQueryable();
        }

И что демонстрирует Ваш код? Вы предлагаете для начала выбрать все данные в List<T>?

Нет, я хотел сказать, что IEnumerable легко превращается IQueryable. И поэтому не понимаю, откуда взялась "зависимость от MSSQL + EF", ведь датаконтекст необязателен, а подойдет любой IEnumerable.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415887
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerP1983skyANAпропущено...
И что демонстрирует Ваш код? Вы предлагаете для начала выбрать все данные в List<T>?

Нет, я хотел сказать, что IEnumerable легко превращается IQueryable. И поэтому не понимаю, откуда взялась "зависимость от MSSQL + EF", ведь датаконтекст необязателен, а подойдет любой IEnumerable.

ну или я думаю совсем не туда. Все равно, откуда "зависимость от MSSQL + EF"?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415888
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
А я и не утверждаю, что это решение универсальное, и должно применяться повсюду и всеми. В отличие от некоторых любителей репозитариев. :-)Покажите-ка, где конкретно "любители репозиториев" утверждали, что их решение универсальное. 14911778

Первый же ответ в этом топике. :-)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38415890
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
контекст это не только механизм который гребет данные, но и кеши двух уровней и механизм единицы работы..
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38416046
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerP1983skyANAпропущено...
И что демонстрирует Ваш код? Вы предлагаете для начала выбрать все данные в List<T>?

Нет, я хотел сказать, что IEnumerable легко превращается IQueryable. И поэтому не понимаю, откуда взялась "зависимость от MSSQL + EF", ведь датаконтекст необязателен, а подойдет любой IEnumerable.Не "зависимость от MSSQL + EF", а необходимость писать реализацию IQueryProvider там где это не надо: 14913484 .
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38416069
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
А Вы проигнорировали вопрос о том, как это поможет исключить дублирования логики запросов?
Наружу торчит IQueryable. Кто мне запретит обращаться к нему, где хочу и как хочу, а не в одном месте? 14913302

Так же ничто не мешает сделать 18 репозитариев с дублирующейся логикой.На практике почему-то такого не происходит

А если торчит IQueryable, значит можно его использовать как IQueryable по полной, разве нет?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38416075
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerP19833) И самая главная причина: зависимость от MSSQL + EF. Изменится источник или хранилище данных - приплыли.
Вот этого совсем не понял.
Код: c#
1.
2.
3.
4.
        public IQueryable<T> Query()
        {
            return new List<T>().AsQueryable();
        }



Ну это жесть какая-то. У одних методов репозтория IQueryable - отложенный запрос, который после транслируется в SQL - это тонкая специфика и понимание, с какой именно БД работаем. Иначе будет ошибка и запрос не сможет транслироваться. У других методов IQueryable не заточен под конкретную БД и представляет собой клиентскую коллекцию. Каша.

Во что ретранслируется этот запрос и что он мне вернет?

Код: c#
1.
var items = Context.Query().Where(d => d.ToString().ToDictionary(x => x, y => y).Any()).ToList();



Бред же.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38416145
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Форум— это дуракаваляние… Разговаривают, разговаривают… Контрреволюция одна. (с)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38416313
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
14913302

Так же ничто не мешает сделать 18 репозитариев с дублирующейся логикой.На практике почему-то такого не происходит

А если торчит IQueryable, значит можно его использовать как IQueryable по полной, разве нет?"На практике почему-то такого не происходит" (ц).
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38416316
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНу это жесть какая-то. У одних методов репозтория IQueryable - отложенный запрос, который после транслируется в SQL - это тонкая специфика и понимание, с какой именно БД работаем. Иначе будет ошибка и запрос не сможет транслироваться. У других методов IQueryable не заточен под конкретную БД и представляет собой клиентскую коллекцию. Каша."Разруха, она в головах." (ц)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38416319
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУБред же.Это как посмотреть. IQueryable позволяет на сервере приложений организовать окружение, напоминающее окружение в хранимой процедуре в БД. Например, IQueryable-свойство является аналогом View из T-SQL. Дополнительные возможности - это скорее хорошо чем плохо. Единственный недостаток - надо уметь ими пользоваться.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38416348
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 skyANA и МСУ

Спасибо, понял. Согласен, что IQueryProvider писать не айс; согласен, что для каждого IQueryProvider есть своя специфика и, если отдавать наружу IQueryable, можно словить жопу.

Предлагаю рассмотреть 2 случая:

1) Опять повторюсь, что у devexpress есть возможность работать с гридом асинхронно (подгружать строки при скроле). Для этого надо использовать LinqInstantFeedbackSource,
EntityInstantFeedbackSource, ещечегототамInstantFeedbackSource. При этом код писать практически не надо. Но для InstantFeedbackSource надо указывать Source как IQueryable.

2) Если посмотреть на domainservice (мертвый ria который) или на dataservice (живой OData), то там можно наружу выдавать IQueryable.

Вопрос: мне в этих 2-х случаях отказаться от репозитория и напрямую пользовать контекст или сделать репозиторий с IQueryable?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38416368
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К"Разруха, она в головах." (ц)
... которые используют IQueryable методы в репозиториях :)

Алексей КМСУБред же.Это как посмотреть. IQueryable позволяет на сервере приложений организовать окружение, напоминающее окружение в хранимой процедуре в БД. Например, IQueryable-свойство является аналогом View из T-SQL. Дополнительные возможности - это скорее хорошо чем плохо. Единственный недостаток - надо уметь ими пользоваться.
Какое еще окружение? Или ты про кашу IQueryable, которая не пойми что возвращает: в одних случаях это отложенный сиквел запрос с последующей ретрансляцией, в других это просто клиентская коллекция. Может тебе посмотреть на OData?

SerP19832 skyANA и МСУ

Спасибо, понял. Согласен, что IQueryProvider писать не айс; согласен, что для каждого IQueryProvider есть своя специфика и, если отдавать наружу IQueryable, можно словить жопу.

Предлагаю рассмотреть 2 случая:

1) Опять повторюсь, что у devexpress есть возможность работать с гридом асинхронно (подгружать строки при скроле). Для этого надо использовать LinqInstantFeedbackSource,
EntityInstantFeedbackSource, ещечегототамInstantFeedbackSource. При этом код писать практически не надо. Но для InstantFeedbackSource надо указывать Source как IQueryable.

2) Если посмотреть на domainservice (мертвый ria который) или на dataservice (живой OData), то там можно наружу выдавать IQueryable.

Вопрос: мне в этих 2-х случаях отказаться от репозитория и напрямую пользовать контекст или сделать репозиторий с IQueryable?
1. Вся беда, что ты под какие-то там компоненты пытаешься рихтовать архитектуру. Это не айс.
2. Про OData уже писал, это отдельный специфический продукт, который заточен под IQueryable. Более того, OData - это не репозиторий, там ты сам контроллер ApiController обязываешь играть по правилам IQueryable. Вообщем, это отдельная тема.
...
Рейтинг: 0 / 0
25 сообщений из 238, страница 6 из 10
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / IRepository как пользоваться
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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