tag:blogger.com,1999:blog-458002489272917533.post5074390980034274352..comments2024-02-14T14:07:38.890+05:00Comments on Блог Александра Бындю: Проблемный шаблон RepositoryAlexander Byndyuhttp://www.blogger.com/profile/14185486842573956085noreply@blogger.comBlogger141125tag:blogger.com,1999:blog-458002489272917533.post-42596147430276783602014-12-30T22:08:02.208+05:002014-12-30T22:08:02.208+05:00Довольно интересная статья, а ещё бы побольше стат...Довольно интересная статья, а ещё бы побольше статей на тему DOM & JQUERY или DOM & JAVASCRIPT. Хочу написать свой сайт и парсить туда всякую информацию. В интернете уже столько доменов появилось что не знаешь какое имя зарегистрироваться. Недавно пробовал открыть что нибудь связанное с едой и взял имя с одной дорамы Хупэпт ну или repept в результате выяснилось что домен то http://gertilohttp://repept.runoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-38629534734109774152014-12-30T22:05:31.819+05:002014-12-30T22:05:31.819+05:00prikolno kruto spasiboprikolno kruto spasibogertilohttp://repept.runoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-3268997386605701222013-02-06T03:33:33.090+06:002013-02-06T03:33:33.090+06:00Почему Вы называете QueryFactory фабрикой, если о...Почему Вы называете QueryFactory фабрикой, если он не возвращает объектов query? В данном случае это скорее фасад с инжекцией зависимости, т.к. он возвращает результат выполнения query а не сам query...Vadimhttp://twitter.com/v_qstreamnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-16131364104647265342012-10-08T12:30:28.524+06:002012-10-08T12:30:28.524+06:00спасибо большое - я к таким же выводам пришел.спасибо большое - я к таким же выводам пришел.monstrUnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-60712726101128090062012-10-08T12:18:25.667+06:002012-10-08T12:18:25.667+06:00В этом случае проще всего использовать Stub. Вот п...В этом случае проще всего использовать Stub. Вот пример http://pastebin.com/rVwx4VJNAlexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-182858090655176202012-10-03T12:07:40.285+06:002012-10-03T12:07:40.285+06:00по заданному Expression возвращает набор объектов
...по заданному Expression возвращает набор объектов<br />реализация может быть такой <br />public virtual IQueryable FindListQ(Expression> predicate)<br /> {<br /> return Query(predicate);<br /> }<br />вызываться может так <br />var list = repository.FindListQ(t => t.OperGroupId == 12);monstrUnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-30224475196051461482012-10-03T11:45:05.244+06:002012-10-03T11:45:05.244+06:00Подскажите, у вас есть интерфейс IBaseRepositoryUn...Подскажите, у вас есть интерфейс IBaseRepositoryUnit, что за метод FindListQ?Alexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-53014246712556101772012-10-02T19:33:03.304+06:002012-10-02T19:33:03.304+06:00то, что при наличии в репозитории только одного об...то, что при наличии в репозитории только одного объекта метод Excecute вернет набор объектов только с одним элементом.<br />хотя бы так.<br />можно усилить - при наличии в репозитории объекта со значением поля 12 возвращается объект с таким же значением поля.<br />но Moq объект для репозитория не срабатывает, когда он передается в качестве реализации интерфейса в класс Query monstrUnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-45021845300703122302012-10-02T19:26:30.522+06:002012-10-02T19:26:30.522+06:00Подскажите, что вы ожидаете от теста? Вы хотите по...Подскажите, что вы ожидаете от теста? Вы хотите понять правильно ли работает лямбда-выражение? Alexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-86944206993613577962012-10-02T16:41:40.298+06:002012-10-02T16:41:40.298+06:00Добрый день !
У меня вопрос про то, как тестироват...Добрый день !<br />У меня вопрос про то, как тестировать ваш класс ...Query.<br />Первый же рефакторинг показал, что этот класс можно наследовать от интерфейса <br />public interface IFindGroupByRespUser where T : class <br />{<br /> IQueryable Execute();<br />}<br /><br />и в итоге класс Query может иметь такую реализацию<br /><br />public class FindGroupByRespUser : IFindGroupByRespUser<br /monstrUnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-48978366716389021922012-07-26T14:26:07.910+06:002012-07-26T14:26:07.910+06:00Артем, 2 момента:
1. QueryFactory не содержит кода...Артем, 2 момента:<br />1. QueryFactory не содержит кода, поэтому по определению не может быть God Object. В ней нет никакой логики<br />2. Эта фабрика приведена для примера, посмотрите во что она может превратиться http://blog.byndyu.ru/2011/08/queryfactory-iqueryfactory.htmlAlexander Byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-82112675429047130952012-07-26T12:24:19.052+06:002012-07-26T12:24:19.052+06:00Возможно я не все понял. Ну не получается ли у нас...Возможно я не все понял. Ну не получается ли у нас при таком подходе QueryFactory становится God Объектом? И не получатеся ли у нас что "ФабрикаЗапростов" это почти тот же самый Репозиторий только с использование шаблона Specification( ILinqProvider)?<br />p.s. Я не в коем случаи не придираюсь. Просто хочу разобраться, т.к. остаються непонятки, а опыта мало.Artem Kovalevnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-79152866370923337242012-07-26T12:23:59.229+06:002012-07-26T12:23:59.229+06:00Возможно я не все понял. Ну не получается ли у нас...Возможно я не все понял. Ну не получается ли у нас при таком подходе <br />QueryFactory становится God Объектом? И не получатеся ли у нас что "ФабрикаЗапростов" это почти тот же самый Репозиторий только с использование шаблона Specification( ILinqProvider)?<br /><br />p.s. Я не в коем случаи не придираюсь. Просто хочу разобраться, т.к. остаються непонятки, а опыта мало.Artem Kovalevnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-25696524660633194402012-07-24T22:40:07.752+06:002012-07-24T22:40:07.752+06:00Спасибо за поддержку.Спасибо за поддержку.Alexander Byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-61458952497998479102012-07-24T22:37:56.114+06:002012-07-24T22:37:56.114+06:00Блин я студент фита, работаю, сейчас в отпуске, пе...Блин я студент фита, работаю, сейчас в отпуске, перечитал весь ваш блог. столько нового и полезного за все время обучения в вузе не видел. Выйду с отпуска с таким багажом знаний коллеги не узнают меня) Спасибо вам.Artem Kovalevnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-66417599649873888852012-07-23T16:45:31.358+06:002012-07-23T16:45:31.358+06:00сделал статический репозиторий, потом два дня пыта...сделал статический репозиторий, потом два дня пытался выловить баг - данные кэшировалисьАртур Терегуловnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-12808665119137799262011-08-30T01:02:10.759+06:002011-08-30T01:02:10.759+06:00@Mr Fontaine
Возможно вам больше подойдет шаблон ...@Mr Fontaine<br /><br />Возможно вам больше подойдет шаблон ActiveRecord. Могу посоветовать полистать книжку, возможно найдете решение близкой к своей проблеме http://martinfowler.com/books.html#eaa<br /><br />Есть вариант посмотреть исходники NHibernate и сделать свой велосипед ля ADO.NET.<br /><br />Ну и наконец перейти на нормальную ORM со временем.Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-3380266027193889572011-08-30T00:58:36.461+06:002011-08-30T00:58:36.461+06:00Александр, конкретно в моем случае приходится рабо...Александр, конкретно в моем случае приходится работать с Ado.net (реализация конкретных репозиториев построено на Ado.net). То есть я только лишь собственными силами создаю некое подобие ОРМ. Использовать DataContext из LinqToSql или Session из NHypernate я не могу (таковы условия задачи). Реализация же самостоятельно с нуля IUnitOfWork представляется мне довольно таки трудоемкой задачей. Mr Fontainehttps://www.blogger.com/profile/06086097717996126809noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-71356094785798763292011-08-29T12:27:21.252+06:002011-08-29T12:27:21.252+06:00@Mr Fontaine
Сохранением и модификацией занимаетс...@Mr Fontaine<br /><br />Сохранением и модификацией занимается UnitOfWork, который автоматически отслеживает состояние объектов.<br /><br />Можете посмотреть для примера <a href="http://blog.byndyu.ru/2010/07/2-unit-of-work_10.html" rel="nofollow">http://blog.byndyu.ru/2010/07/2-unit-of-work_10.html</a>Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-2371913289693898142011-08-28T18:11:51.429+06:002011-08-28T18:11:51.429+06:00Александр, очень хорошая статья, спасибо. Я сейчас...Александр, очень хорошая статья, спасибо. Я сейчас как раз столкнулся со стремительным разрастанием репозиториев в проекте. Мало того, у нескольких (не всех) репозиториев может присутствовать общая логика. В этом случае наследование применять как-то совсем не хочется. Рефакторинг инфраструктуры сейчас мне представляется как раз в выделении методов репозиториев в отдельные Query объекты.<br /><br Mr Fontainehttps://www.blogger.com/profile/06086097717996126809noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-45477089826042331202011-08-05T09:00:15.403+06:002011-08-05T09:00:15.403+06:00@Nikolay Sergeev
Потрудитесь прочитать комментари...@Nikolay Sergeev<br /><br />Потрудитесь прочитать комментарии выше.<br /><br />QueryFactory - это <b>одна из возможных реализаций</b> идеи. Можно делать тоже самое вообще не реализуя IQueryFactory.<br /><br />Идея в том, что надо избавиться он больших объектов Repository, которые становятся фактически Singletone'ми.Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-53601422565533710652011-08-05T02:17:13.424+06:002011-08-05T02:17:13.424+06:00Если по существу, то мне не нравится, что для того...Если по существу, то мне не нравится, что для того чтобы выполнить запрос <br /><br />.Where(x => x.Email == email) .SingleOrDefault();<br /><br />мне требуется написать:<br />1. целый класс FindAccountByEmailQuery<br />2. метод в интерфейс IQueryFactory<br />3. метод в класс QueryFactory<br /><br />и протащить параметр email через все эти "слои".<br /><br />Разве не nshttps://www.blogger.com/profile/00609432143366390888noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-1270732393694314792011-08-04T18:47:30.768+06:002011-08-04T18:47:30.768+06:00Мысли вслух. То, что нынче именуют UnitOfWork в ср...Мысли вслух. То, что нынче именуют UnitOfWork в сравнении с фаулеровским UnitOfWork, скорее, нужно называть UnitOfWorkManager, потому что настоящий UnitOfWork встроен в ORM.Idsahttps://www.blogger.com/profile/15985124810962581978noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-44287979432830000352011-08-04T12:32:31.192+06:002011-08-04T12:32:31.192+06:00Хм... На текущий момент мое понимание взаимоотноше...Хм... На текущий момент мое понимание взаимоотношений между UnitOfWork и репозиториями заключается в том, что репозиторий управляет entity-specific операциями (Add, Delete), а UnitOfWork управляет операциями по контексту, сессии в целом (SaveChanges, ClearChanges).<br /><br />Хотя, с другой стороны, Add и Delete модифицируют UnitOfWork. И если бы не было прослойки в виде EF контекста, такие Idsahttps://www.blogger.com/profile/15985124810962581978noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-726467271025804102011-08-04T12:11:28.549+06:002011-08-04T12:11:28.549+06:00> А вот об Add я бы этого не сказал. Мне кажетс...> А вот об Add я бы этого не сказал. Мне кажется, ему самое место в репозитории. Или нет?<br /><br />Мне как-то больше нравится вот такой подход <a href="http://martinfowler.com/eaaCatalog/unitOfWork.html" rel="nofollow">P of EAA Catalog | UnitOfWork</a>Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.com