tag:blogger.com,1999:blog-458002489272917533.post8882057128601092392..comments2024-02-14T14:07:38.890+05:00Comments on Блог Александра Бындю: Dapper + QueryObject, как замена ORMAlexander Byndyuhttp://www.blogger.com/profile/14185486842573956085noreply@blogger.comBlogger30125tag:blogger.com,1999:blog-458002489272917533.post-22475675582109893062013-05-07T09:00:04.243+06:002013-05-07T09:00:04.243+06:00А в крупных что используете?А в крупных что используете?Alexander Byndyuhttp://www.byndyu.ru/noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-13964968877759472002013-05-07T02:26:49.470+06:002013-05-07T02:26:49.470+06:00Извиняюсь за поздний ответ.
В крупных проектах не...Извиняюсь за поздний ответ. <br />В крупных проектах не используем, только в небольших.Damir Bagapovnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-81079737209231850252013-04-09T16:11:49.200+06:002013-04-09T16:11:49.200+06:00"Высокая на 500 тыс. записей? Кому вы такое к..."Высокая на 500 тыс. записей? Кому вы такое количество собрались показывать?"<br /><br />Столько мы не показываем.<br /><br />"Как проверяли?" Профайлером. И NH и EF при сложных запросах, иногда начинают проливать память. Переход на Dapper это необходимость, я бы сам с удовольствием остался на NH.<br /><br />"Ребята, не надо клеить SQL из строк в коде приложения, да еще иAlexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-29031452840150748632013-04-09T15:57:03.081+06:002013-04-09T15:57:03.081+06:00Не выдержал, такого юмора и решил забросить пару к...Не выдержал, такого юмора и решил забросить пару камней. :)<br /><br />Использовал Dapper, в результате перешел на EF Code First. На мой взгляд это куда более удобное и не менее гибкое решение.<br /><br />"Высокая скорость работы" - Высокая на 500 тыс. записей? Кому вы такое количество собрались показывать?<br />"Стабильность, отсутствие утечек памяти" - Как проверяли?<br />&Sergeyhttp://twitter.com/Sergey01694250noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-61367640975975338642013-04-02T14:58:30.426+06:002013-04-02T14:58:30.426+06:00Нет, но уже несколько человек рекомендовали. Он у ...Нет, но уже несколько человек рекомендовали. Он у вас он в продакшене курится?Alexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-12039535275592459762013-04-02T00:50:43.883+06:002013-04-02T00:50:43.883+06:00Рассматривался ли в качестве альтернативы BLToolki...Рассматривался ли в качестве альтернативы BLToolkit? Если да, почему отказались?Damir Bagapovnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-88242938679355473252013-03-27T00:29:33.328+06:002013-03-27T00:29:33.328+06:00С первого раза ответ не получился.
Итак я сколня...С первого раза ответ не получился. <br /><br />Итак я сколняюсь к решение которое больше устроит комманду по следующим параметрам - удобство использования, простота отладки и свобода понимания и поддержки.<br /><br />- хранимые процедуры удобны тем что современные IDE для баз данных предоставляют интелисенс и проверку самого запроса на правильность. Тестировать их проблемно, с точки зрения Maksnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-24575731258820787782013-03-26T22:57:43.969+06:002013-03-26T22:57:43.969+06:00Если проходили, то может подскажешь решение.
Есть...Если проходили, то может подскажешь решение.<br /><br />Есть сложная логика формирования запроса, которая на выходе дает относительно несложный запрос (права на Linq или Criteria его не написать). Куда девать эту логику? Переносить в хранимки?Alexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-78327144574800895442013-03-26T22:54:38.532+06:002013-03-26T22:54:38.532+06:00На текущем проекте использую dapper+dapper.extensi...На текущем проекте использую dapper+dapper.extensions только для интеграционных тестов на взаимодействия с базой данных.<br /><br />В свое время несколько раз прыгали с NHibernate на Entity и обратно в надежде решить все проблемы и понял что всё - не решиться. Поэтому стремлюсь решать "конкретные" проблемы - например повышение скорости выборки запросов. По-скольку с развитием проекта и Maksnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-31406668124274938082013-03-26T22:35:03.776+06:002013-03-26T22:35:03.776+06:001) Решение только в стадии зарождения, использую D...1) Решение только в стадии зарождения, использую Dapper около 2х месяцев.<br /><br />2) ORM можно использовать, но в нашем случае выигрыша не будет, 99% запросов - это выборки и схема меняется очень редко, думаю что вообще не поменяется :) Если вы были на вебинаре, то помните, что мы обсуждали возможные комбинации разных инструментов, конечно, ORM тоже входит в их список.<br /><br />3) При Alexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-90423821290516179322013-03-26T22:16:00.911+06:002013-03-26T22:16:00.911+06:00Добрый день, решил оставить небольшой отзыв по выш...Добрый день, решил оставить небольшой отзыв по вышесказанному, не судите строго.<br /><br />1) В целом решение не выглядит законченным, так или иначе при работе с большим набором таблиц появится дубликация при работе со стандартными операциями (получения по id, удаление по id), что можно улучшить используя набор базовых классов. Dapper.Extensions - решает эту проблему.<br /><br />2) Возможно это Maksnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-9794346067698015632013-03-19T18:34:29.171+06:002013-03-19T18:34:29.171+06:00В LightDataAccess если запрос не возвращает колонк...В LightDataAccess если запрос не возвращает колонку, соответствующую свойству класса, его нужно явным образом включать в список игнорируемых. Это само по себе неудобно и некрасиво выглядит, но хуже то, что добавили свойство в класс → сломали все запросы.Виктор Глушенковnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-4682210068654066452013-03-18T00:28:09.950+06:002013-03-18T00:28:09.950+06:00Почему ушли от EmitMapper?Почему ушли от EmitMapper?Alexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-29034084805845380562013-03-18T00:27:48.024+06:002013-03-18T00:27:48.024+06:00Как это обычно и делалось в ADO.NET: 1. Открываем ...Как это обычно и делалось в ADO.NET: 1. Открываем соединение 2. Открываем транзакцию 3. При завершении метода с помощью объекта транзакции делаем CommitAlexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-33955621869672125082013-03-18T00:26:29.654+06:002013-03-18T00:26:29.654+06:00Утечки были в основном при работе со строками и ар...Утечки были в основном при работе со строками и аргументами, которые передавались в функции вызова SQL. К сожалению, стектрейс из MemProf я не сохранил и тикет не создал. Буквально на этой неделе в другом проете тоже обнаружились утечки, пришлось переписывать запрос на Dapper. В следующий раз при обнаружении надо будет тикет создать.Alexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-21421486893087139822013-03-18T00:24:50.418+06:002013-03-18T00:24:50.418+06:00Мы рассматривали такую возможность, но специфика п...Мы рассматривали такую возможность, но специфика проекта такова, что нашлось другое более гибкое решение. Вообще, в идеале, я настаиваю на каком-нибудь поисковом движке типа Sphinx'a, но пока спор с тех. лидом со стоны заказчика по этому вопросу затянулся.Alexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-80664886290959818912013-03-14T16:34:58.731+06:002013-03-14T16:34:58.731+06:00Размер базы в терабайт и основная нагрузка на чтен...Размер базы в терабайт и основная нагрузка на чтение это симптомы для OLAP. Что вы думаете о возможности использовании OLAP для подобных проектов?Ivan Makarevichhttp://www.facebook.com/ivan.makarevich.54noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-26573882749730880212013-03-13T19:07:38.559+06:002013-03-13T19:07:38.559+06:00Можете более подробно осветить проблему утечек пам...Можете более подробно осветить проблему утечек памяти в nhibernate? Вы создали issue в трэкере?Egornoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-45241584057512066402013-03-11T19:51:22.095+06:002013-03-11T19:51:22.095+06:00Может я чуть не прото :), к примеру как будет реал...Может я чуть не прото :), к примеру как будет реализовываться декларативный способ работы с транзакциями - т.е. над методом ставим [Transaction] и всё что внутри метода обращается к dal делается в одной транзакции, сам dal фактически не управляет открытиями транзакций (как то так)Евгений Румянцевnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-29033106873745425102013-03-11T17:57:57.366+06:002013-03-11T17:57:57.366+06:00:)
Блог делал не я, а платформа blogger.com:)<br />Блог делал не я, а платформа blogger.comAlexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-89360813485124085852013-03-11T17:35:33.666+06:002013-03-11T17:35:33.666+06:00Простите великодушно, мой коммент не по теме стать...Простите великодушно, мой коммент не по теме статьи.<br /><br />Вы пишете, что важным приоритетом для вас является скорость. Так почему же блог сделан таким тормозным? Банальное прокручивание люто-бешено тормозит.<br /><br />Да, я сейчас со старенького компа, ещё одноядерного. Но, чёрт возьми, я на нём Дум3 в своё время прошёл без тормозов. А тут банальная страничка блога рывками скроллируется.<anonymousnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-71448366349681337562013-03-11T17:28:29.196+06:002013-03-11T17:28:29.196+06:00Сейчас я инжектирую IConnectionFactory, которая во...Сейчас я инжектирую IConnectionFactory, которая возвращает соединение.<br /><br />Реализация https://github.com/AlexanderByndyu/ByndyuSoft.Infrastructure/blob/master/source/Infrastructure.Dapper/ConnectionFactory.cs<br /><br /><br /><br />Что касается транзакций, то я думал, что из ConnectionFactory можно возвращать UnitOfWork, который будет с собой нести всю информацию о подключении, включая Alexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-45333690649725127662013-03-11T17:13:45.293+06:002013-03-11T17:13:45.293+06:00Да, полезная инфа, спасибо.
Кстати пока в примерах...Да, полезная инфа, спасибо.<br />Кстати пока в примерах не увидел более прозрачного управления соединениями и транзакциями - а ля в spring-е, может что не дочитал...<br />Ну или самому подружить сие с некоторым ioc из которого юзать коннекты?Евгений Румянцевnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-24782582997850401402013-03-11T16:23:29.173+06:002013-03-11T16:23:29.173+06:00Мы на одном из проектов использовали EmitMapper (h...Мы на одном из проектов использовали EmitMapper (http://emitmapper.codeplex.com/) и их библиотечку LightDataAccess. Сейчас на другом проекте используем Dapper.Виктор Глушенковnoreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-14651233311962922212013-03-11T15:27:47.597+06:002013-03-11T15:27:47.597+06:00Спасибо, добавилСпасибо, добавилAlexander Byndyuhttp://www.facebook.com/alexander.byndyunoreply@blogger.com