Почему я до сих пор не использую Linq к базам данных


6 0

К сожалению автор удалил видео, поэтому статья немного потеряла в информативности.

В этом видео показатель, почему я до сих пор не использую Linq. На 4:26 показана интересная конструкция, которую Linq сгенерировал на простую просьбу найти записи, которые начинаются с определенного слова. Такая задача решается очень просто, достаточно просто LIKE 'СЛОВО%', но Linq зачем-то добавил еще какую-то проверку на длину совпадения. Вот этого я не совсем понял, зачем такое нужно. 

За счет универсальности LINQ нужно быть консервативным и проверять больше, чем если бы программист написал бы. Я изначально не верил в то, что Linq будет генерировать идеальные запросы и хотя много раз слышал, что генератор улучшился, я все же вижу, что бывают неожиданные результаты. Даже ребята из MS сидят и не понимают, что происходит и что сгенерировалось. С помощью правой части я вижу смысл сравнения только если есть микс - Unicode и Ascii, но это должно решаться программистом, а не LINQ. 

Я все же предпочитал и скорей всего в ближайшее время буду предпочитать писать запросы самостоятельно, ведь это очень просто, у меня есть полный контроль и LINQ не делает запросы проще, но делает их менее переносимыми (нельзя просто скопировать запрос в код на PHP), сложно оптимизировать и теряется контроль. Сколько лет уже LINQ существует? Пока мое отношение к нему не изменилось. 


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Kastor

12 Декабря 2017

Хорошо, что ты на Java не пишешь. Думаю тебе бы не понравился Spring Data где название метода определяет то, как будет генерироваться запрос =)


Pikachu

13 Декабря 2017

Kastor, orm подходят для  crud, и простые запросы он генерирует оптимально. Если нужно писать самому, бери MyBatis.


Kastor

13 Декабря 2017

Pikachu, вероятно ты меня не правильно понял. Мне наоборот понравился Spring Data с учетом того, что я не только CRUD запросы на нем выполняю.
Важный момент - нужно тестировать слой репозиторией на embedded db, что бы быть уверенным, что все правильно отработало. Когда на чистом SQL пишешь тоже нужно писать тесты, но когда юзаешь Spring Data то особенно.


Евгений

14 Декабря 2017

Долгое время тоже не пользовался. Потом постепенно стал применять сначала чтобы получиться. В итоге сейчас не могу без него обходиться при работе с DataSet. Работа с данными стала гораздо легче, код короче и понятней. В mvc очень удобно данныее полученные из базы "загонять" в коллекцию модели.


Denis

07 Января 2018

Смысл наверно имеет для тех, кто использует подход DDD (Domain Driven Design) где существует такое понятие как "СПЕЦИФИКАЦИЯ". Вот с помощью LINQ можно как раз легко создавать эти спецификации, которые в себе инкапсулируют критерии отбора, и не важно где находятся СУЩНОСТИ в Базе Данных, или в памяти ПК, работа ведется как с коллекцией объектов.


Denis

07 Января 2018

Михаил, а ты используешь DDD, вообще сталкиваешься с ним в работе? Может коллеги используют? Можешь что-то об этом сказать?


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне