К сожалению автор удалил видео, поэтому статья немного потеряла в информативности.
В этом видео показатель, почему я до сих пор не использую Linq. На 4:26 показана интересная конструкция, которую Linq сгенерировал на простую просьбу найти записи, которые начинаются с определенного слова. Такая задача решается очень просто, достаточно просто LIKE 'СЛОВО%', но Linq зачем-то добавил еще какую-то проверку на длину совпадения. Вот этого я не совсем понял, зачем такое нужно.
За счет универсальности LINQ нужно быть консервативным и проверять больше, чем если бы программист написал бы. Я изначально не верил в то, что Linq будет генерировать идеальные запросы и хотя много раз слышал, что генератор улучшился, я все же вижу, что бывают неожиданные результаты. Даже ребята из MS сидят и не понимают, что происходит и что сгенерировалось. С помощью правой части я вижу смысл сравнения только если есть микс - Unicode и Ascii, но это должно решаться программистом, а не LINQ.
Я все же предпочитал и скорей всего в ближайшее время буду предпочитать писать запросы самостоятельно, ведь это очень просто, у меня есть полный контроль и LINQ не делает запросы проще, но делает их менее переносимыми (нельзя просто скопировать запрос в код на PHP), сложно оптимизировать и теряется контроль. Сколько лет уже LINQ существует? Пока мое отношение к нему не изменилось.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
Хорошо, что ты на Java не пишешь. Думаю тебе бы не понравился Spring Data где название метода определяет то, как будет генерироваться запрос =)
Kastor, orm подходят для crud, и простые запросы он генерирует оптимально. Если нужно писать самому, бери MyBatis.
Pikachu, вероятно ты меня не правильно понял. Мне наоборот понравился Spring Data с учетом того, что я не только CRUD запросы на нем выполняю.
Важный момент - нужно тестировать слой репозиторией на embedded db, что бы быть уверенным, что все правильно отработало. Когда на чистом SQL пишешь тоже нужно писать тесты, но когда юзаешь Spring Data то особенно.
Долгое время тоже не пользовался. Потом постепенно стал применять сначала чтобы получиться. В итоге сейчас не могу без него обходиться при работе с DataSet. Работа с данными стала гораздо легче, код короче и понятней. В mvc очень удобно данныее полученные из базы "загонять" в коллекцию модели.
Смысл наверно имеет для тех, кто использует подход DDD (Domain Driven Design) где существует такое понятие как "СПЕЦИФИКАЦИЯ". Вот с помощью LINQ можно как раз легко создавать эти спецификации, которые в себе инкапсулируют критерии отбора, и не важно где находятся СУЩНОСТИ в Базе Данных, или в памяти ПК, работа ведется как с коллекцией объектов.
Михаил, а ты используешь DDD, вообще сталкиваешься с ним в работе? Может коллеги используют? Можешь что-то об этом сказать?
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.