Я работаю над реализацией всех данных с помощью dapper. Моя первая идея заключалась в реализации шаблона репозитория с использованием dapper. от: http://www.bradoncode.com/blog/2012/12/creating-data-repository-using-dapper.htmlDbContext, DbSet и т. Д. В Dapper
Затем я добавил выражение linq в dapper sqlbuilder для минимизации SQL, как в примере (динамический запрос). Так что я был в состоянии написать что-то вроде
sqlbuilder.Where(c=>c.Id == 1) or c.Id = myVar
А теперь я спрашиваю себя, если это было бы хорошей идеей, чтобы реализовать DbContext как и DbSet и выражения использовать Linq.
Вопрос не в том, чтобы реализовать полный dbset или dbcontext. Но просто что-то похожее (без всякой сложности).
Только DbContext, инициализирующий соединение и несколько DbSet, который запрашивает таблицы с использованием Dapper и реализацию iqueryable для «генерации» SQL на основе данного выражения ссылок с использованием dapper sqlbuilder.
После прочтения некоторых фрагментов кода и сопоставления с сущностью, я считаю, что это пустая трата времени, поскольку инфраструктура сущности уже делает это. Но с dapper у вас есть весь контроль над сгенерированным sql, и он всегда будет использовать один и тот же шаблон.
Прежде чем начать (чтобы тратить свое время), я хотел бы знать, хорошая ли это идея или нет.
Редактировать: много комментариев говорит, что SqlBuider не очень хорошо, тогда почему он доступен в проекте Dapper?
Если вы хотите, чтобы все функции Entity Framework, Ditch Dapper и использовали Entity Framework. Code-First делает вещи довольно легкими, и вам не придется беспокоиться о том, чтобы делать это самостоятельно. –
Вы не можете иметь это в обоих направлениях. EF и L2S медленны по какой-то причине, Dapper быстро по какой-то причине.Если вы сделаете Dapper в EF или L2S, он будет таким же медленным, потому что генераторы SQL просто не идеальны, и если вы не являетесь экспертом в разработке таких генераторов (что по внешнему виду вещей вы не знаете) не собираются никуда даже приближаться к тем, что делают L2S и EF, поэтому ваш генератор, вероятно, произведет результаты WORSE, чем EF или L2S. Помните, что для создания хорошего SQL намного больше, чем простого перевода. –
Благодарю вас за ответ. Это всего лишь вопрос, и я не претендую на то, чтобы быть таким же хорошим, как дизайнеры/разработчики EF. Даже если мой вопрос глупо, хороший ответ может помочь не эксперту, как я. – Madagaga