powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / IRepository как пользоваться
25 сообщений из 238, страница 2 из 10
IRepository как пользоваться
    #38414414
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПроблема в самой необходимости слоя DTO, когда без него можно обойтись.
Не встречал таких ситуаций, даже в самых тривиальных задачах. Добавилось свойство в модель для каких-то своих нужд, зачем мне это поле протаскивать в SOA, нагружая трафик и пугая пользователей веб сервиса? А если у меня 2 веб сервиса, в одном нужно протаскивать это свойство, в другом нельзя. Ну и так далее. Не нужно мешать логику с трансфером, сельчанин :)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414417
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТак... Попахивает топиком ненависти к ASP.NET MVC Это был способ привлечь читателей в топик. Правильное название - залог успеха.

МСУАлексей КIQueryable + подставляемые выражения (назовём это так) позволяют творить чудеса. Зачем же себя ограничивать?
Так ты с этим IQueryable + "подставляемые выражения" можешь точно так же работать в шаблоне спецификации. В чем проблема? Накохер (с) мне таскаться с этим IQueryable по всему полю? Сеять потенциальные ошибки, плодить потенциальные грабли и пугать местное население? В топку :)Накойхер (ц) мне "спецификации", если наружу может торчать честный IQueryable?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414419
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНакойхер (ц) мне "спецификации", если наружу может торчать честный IQueryable?
Это проблема (Repository, как фабрика запросов). Как будешь её решать? Допиливать код в 100500 местах?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414424
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


Эту статью уже как-то рассматривали. Проблем в передаче из репозитория IQueryable<T> не увидел.Как поарботаешь в команде из 10+ человек, так поймёшь.

я понял. речь идёт о необъяснимых вещах.

вы так не переживайте, я видел достаточно серьезные проекты, над которыми работают овер 10 человек. так там не то, что не скрывают IQueryable<T>, так вообще фигачат SQL-ники прямо в обработчиках кнопок, фигарят классы для маппинга ОРМ прямо что называется "на месте" и вообще ничуть не запариваются. так что все эти 1000+ команды -- по крайне мере в наших реалиях вот совершенно не аргумент, говнокодят без зазрения совести, только в путь...

давайте хоть одну реальную проблему, к которой может привести выдача репой IQueryable<T>. по вашей же ссылке на каждую проблему есть решение.

где эта нерешаемая трабла, связанная с применением IQueryable<T>? серьезно же спрашиваю, может я чего-то незнаю. и только без вот этих вот "вырастешь — узнаешь"
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414426
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КПроблема в самой необходимости слоя DTO, когда без него можно обойтись.
Не встречал таких ситуаций, даже в самых тривиальных задачах. Добавилось свойство в модель для каких-то своих нужд, зачем мне это поле протаскивать в SOA, нагружая трафик и пугая пользователей веб сервиса?Потому что добавление поля в БД влечёт за собой необходимость изменения формы редактирования. Накой мне добавлять это поле ещё в N классах?

МСУА если у меня 2 веб сервиса, в одном нужно протаскивать это свойство, в другом нельзя. Ну и так далее.Там где это не надо - этого делать не надо. :-)

МСУНе нужно мешать логику с трансфером, сельчанин :)Ну уж как умеем, если что не так - извиняйте. :-)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414427
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУплодить потенциальные грабли и пугать местное население

блин ну выдайте хоть одну потенциальную граблю. че людей мучаете? что за мистика такая???
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414435
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttтак что все эти 1000+ команды -- по крайне мере в наших реалиях вот совершенно не аргумент, говнокодят без зазрения совести, только в путь...
Мы тут паттерны обсуждаем, а не гавнокод. В чём смысл твоего выступления тут?

hVosttдавайте хоть одну реальную проблему, к которой может привести выдача репой IQueryable<T>. по вашей же ссылке на каждую проблему есть решение.
В ссылке всё описано. Если до сих пор не понял эту проблему, то выпей яду.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414436
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУплодить потенциальные грабли и пугать местное население
блин ну выдайте хоть одну потенциальную граблю. че людей мучаете? что за мистика такая???
Ты реально такой тугой? В первой же главе "Проблема: Repository, как фабрика запросов" и 2 варианта решения.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414442
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНакойхер (ц) мне "спецификации", если наружу может торчать честный IQueryable?
Это проблема (Repository, как фабрика запросов). Как будешь её решать? Допиливать код в 100500 местах?Да нет никаких проблем. Все проблемы в головах авторов паттерна "репозитарий", которые вдруг решили, что можно вынести логику работы с данными отдельно от остальной логики. Это не всегда возможно, поскольку может привести к "N+1". Накой мне проблемы с производительностью?

У меня есть классы сущностей (содержат данные), классы сервисов (содержат логику) и выражения (содержат выражения :-), с целью избежать "N+1" и иметь возможность повторного использования). Сервер приложений, по сути, один большой репозитарий...

А нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414444
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПотому что добавление поля в БД влечёт за собой необходимость изменения формы редактирования. Накой мне добавлять это поле ещё в N классах?
Добавление поля в БД вовсе не означает добавление его в веб сервис.

Алексей КМСУА если у меня 2 веб сервиса, в одном нужно протаскивать это свойство, в другом нельзя. Ну и так далее.Там где это не надо - этого делать не надо. :-)
Это поле (где не надо) всё-равно будет протаскивать в wsdl подписчикам. Их кодогенерированные классы будут содержать лишние свойства. Представляешь ситуацию, если SOA подписчикам нужно только Id и Title, а ты им еще десяток свойств сливаешь? :)

Алексей КНу уж как умеем, если что не так - извиняйте. :-)
Наезд на DTO считаю дерзким и необоснованным! :)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414455
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДа нет никаких проблем. Все проблемы в головах авторов паттерна "репозитарий", которые вдруг решили, что можно вынести логику работы с данными отдельно от остальной логики. Это не всегда возможно, поскольку может привести к "N+1". Накой мне проблемы с производительностью?
Так, еще раз. Какой N + 1, у нас же есть Specification? Ты сказал, что у него возможности ограничены. Но в чем выражено ограничение не признаешься :) Во-вторых, можно Func<> передавать входным параметром, если приспичит.

Алексей КА нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться.
Ты так и не ответил на вопрос про 100500 исправлений в коде...
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414460
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КПотому что добавление поля в БД влечёт за собой необходимость изменения формы редактирования. Накой мне добавлять это поле ещё в N классах?
Добавление поля в БД вовсе не означает добавление его в веб сервис.

Алексей Кпропущено...
Там где это не надо - этого делать не надо. :-)
Это поле (где не надо) всё-равно будет протаскивать в wsdl подписчикам. Их кодогенерированные классы будут содержать лишние свойства. Представляешь ситуацию, если SOA подписчикам нужно только Id и Title, а ты им еще десяток свойств сливаешь? :)Я говорю про случаи, когда в сервис надо выложить именно "всё". В веб-проектах, вероятно, такое не требуется. Но у меня WPF, тут такое требуется часто.

МСУАлексей КНу уж как умеем, если что не так - извиняйте. :-)
Наезд на DTO считаю дерзким и необоснованным! :)Зря. :-)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414469
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttпропущено...

блин ну выдайте хоть одну потенциальную граблю. че людей мучаете? что за мистика такая???
Ты реально такой тугой? В первой же главе "Проблема: Repository, как фабрика запросов" и 2 варианта решения.

делаем набор спецификаций. получаем из репы IQueryable<T> по указанной спецификации. и не надо плодить 100500 методов. зато можно пейджинг повесить без видимых проблем. или отдать в OData. и вообще. какие проблемы-то? ниче не понял. яду выпить не предлагать. скажи лучше что сам не знаешь.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414483
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТы сказал, что у него возможности ограничены. Но в чем выражено ограничение не признаешься :)Максимум что там можно сделать, это подставить выражение в один из расширяющих методов класса Queryable (Where, Select и т. п.). Мне этого недостаточно.

МСУМСУВо-вторых, можно Func<> передавать входным параметром, если приспичит.И как мы будем подставлять IL, живущий в Func<>, в LINQ Expression?

МСУАлексей КА нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться.
Ты так и не ответил на вопрос про 100500 исправлений в коде... Потому что при использовании подставляемых выражений с повторным использованием всё в порядке.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414485
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414497
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться.

Проблема: Repository, как фабрика запросовОбъект IQueryable в .NET дает больше возможностей сделать ошибки в проектировании.
Ну дак о чём и речь, что фиг уследишь за тем, что все в команде умеют пользоваться IQueryable и не напишут кода, создающего проблемы.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414500
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой?Это проблема не IQueryable как такового, а проблема автора, который не добавил в проект необходимой абстракции.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
IQueryable<D> D
{
    get
    {
        return 
             from c in db.C
             select new D
             {
                  Base = c,
                  IsActive = c.IsDeleted == false
             };
    }
}
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414502
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttделаем набор спецификаций. получаем из репы IQueryable<T> по указанной спецификации. и не надо плодить 100500 методов. зато можно пейджинг повесить без видимых проблем. или отдать в OData. и вообще. какие проблемы-то? ниче не понял. яду выпить не предлагать. скажи лучше что сам не знаешь.
Какой набор спецификаций, зачем, куда? Какие 100500 методов? Ты о чем?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414504
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей КА нытьё по поводу проблем из-за IQueryable - это от неумения им пользоваться.

Проблема: Repository, как фабрика запросовОбъект IQueryable в .NET дает больше возможностей сделать ошибки в проектировании.
Ну дак о чём и речь, что фиг уследишь за тем, что все в команде умеют пользоваться IQueryable и не напишут кода, создающего проблемы.Оно даёт не больше возможностей для ошибки, чем всё остальное. Автор статьи лукавит. Вероятно, он основывается на своём неудачном опыте. :-)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414506
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAhVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой?Это проблема не IQueryable как такового, а проблема автора, который не добавил в проект необходимой абстракции.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
IQueryable<D> D
{
    get
    {
        return 
             from c in db.C
             select new D
             {
                  Base = c,
                  IsActive = c.IsDeleted == false
             };
    }
}

А Вы как обязываете своих разработчиков добавлять такие вот абстракции в проект?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414523
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой?

Меня в параграфе «Проблема: Repository, как фабрика запросов» устраивает:

Решение №2

Можно использовать шаблон Specification вместе c шаблоном Query Object. Второй шаблон уже реализован в .NET с помощью дерева запросов на LINQ.

Только возвращать можно не IEnumerable<T>, а IQueryable<T> — и я не вижу к каким проблемам это может привести. Зато явный профит вижу. Можно сделать Take и Skip, можно сделать OfType, можно сделать выборку только нужных полей (например, если не хочется для отдельных случаев вытаскивать большой блоб) или дополнительно уточнить запрос динамически ( в тех случаях, когда спецификации уже не подходят, например OData, или кастомный фильтр/сортировщик на гриде ).

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


пропущено...

Ну дак о чём и речь, что фиг уследишь за тем, что все в команде умеют пользоваться IQueryable и не напишут кода, создающего проблемы.Оно даёт не больше возможностей для ошибки, чем всё остальное. Автор статьи лукавит. Вероятно, он основывается на своём неудачном опыте. :-)То есть возможность дублирования логики запросов - это не возможность? Ещё раз: как вы эту НЕВОЗМОЖНОСТЬ обеспечиваете? :)
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414526
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЯ говорю про случаи, когда в сервис надо выложить именно "всё". В веб-проектах, вероятно, такое не требуется. Но у меня WPF, тут такое требуется часто.
Ну хорошо, выложилось всё. Но причем тут логика (модель, code behind валидация) и презентационный слой (UI, валидация)?

Алексей КМаксимум что там можно сделать, это подставить выражение в один из расширяющих методов класса Queryable (Where, Select и т. п.). Мне этого недостаточно.
Почему же, ты точно так же можешь конструировать весь отложенный запрос или несколько.

Алексей КИ как мы будем подставлять IL, живущий в Func<>, в LINQ Expression?
Какой IL? Я про Func<A, B> predicate, который можно передавать в аргументы.

Алексей КПотому что при использовании подставляемых выражений с повторным использованием всё в порядке.
Какие в результирущем IQueryable "подставляемые выражения"?
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414529
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Это проблема не IQueryable как такового, а проблема автора, который не добавил в проект необходимой абстракции.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
IQueryable<D> D
{
    get
    {
        return 
             from c in db.C
             select new D
             {
                  Base = c,
                  IsActive = c.IsDeleted == false
             };
    }
}

А Вы как обязываете своих разработчиков добавлять такие вот абстракции в проект?Так же как и в остальных случаях. Это могла быть и недостающая вьюха в БД, и всё что угодно, в зависимости от имеющейся архитектуры.
...
Рейтинг: 0 / 0
IRepository как пользоваться
    #38414532
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAhVostt, что тебе в параграфе "Проблема: Repository, как фабрика запросов" не понятно? Не считаешь это проблемой?Это проблема не IQueryable как такового, а проблема автора, который не добавил в проект необходимой абстракции.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
IQueryable<D> D
{
    get
    {
        return 
             from c in db.C
             select new D
             {
                  Base = c,
                  IsActive = c.IsDeleted == false
             };
    }
}



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


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