Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Antony41
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 11
1

Стоит ли использовать LINQ?

10.07.2018, 21:24. Просмотров 683. Ответов 36
Метки нет (Все метки)

Стоит ли использовать LINQ + БД? Какие есть грабли, подводные камни и прочие костыли при сравнении с ADO?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2018, 21:24
Ответы с готовыми решениями:

Как использовать LINQ с базами SQLite
Здравствуйте, скажите пожалуйста, как использовать LINQ с базой данных SQLite? А то постоянно...

Linq или не Linq. Linq медленней стандартных методов?
Есть у нас два массива, нужно найти совпадения в первом из второго. Два варианта реализации, первый...

Стоит ли использовать Entity Framework
Приветствую сообщество. Стал такой вопрос стоит ли использовать Entity Framework в проекте, есть ли...

стоит ли использовать вторичные потоки для обновление данных в БД
Всем привет! Нужен совет от опытных разработчиков ПО, которые принимали участие в проектировании...

Какой способ стоит использовать для доступа к базе SQL
Задался таким вопросом: Какой способ стоит использовать для доступа к базе SQL, в силу своей...

36
amr-now
Эксперт JS
1559 / 903 / 380
Регистрация: 14.06.2018
Сообщений: 2,281
10.07.2018, 22:21 2
ADO не стоит использовать в части неначальных 80%.
Connection, Command, Reader и прочую элементарищину стоит,
а Adapter и дальше категогически не стоит.

LINQ стоит использовать в части Entity Framework.
LINQtoSQL слишком узкое направление в части MS SQL и негибкое.
1
Antony41
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 11
10.07.2018, 22:29  [ТС] 3
спасибо за ответ, я только начал изучать С# перешел с Delphi есть проект долгой разработки (CRM) который попал под вопрос продолжать разработку с применением ADO на Delphi или переписать пока не поздно на С# + Linq
вот только понимания пока не хватает LINQ + SQL либо LINQ + EF при работе с БД использовать, а то и ADO...
В любом случае спасибо, потому что на данном этапе сложно понять что нужно...
0
amr-now
Эксперт JS
1559 / 903 / 380
Регистрация: 14.06.2018
Сообщений: 2,281
10.07.2018, 22:34 4
Antony41, Connection, Command, Reader в ADO.NET очень сильно похожи на древнюю технологию ADO. Так что смысл будет практически понятен сразу.

А LINQ - такой же столп программирования, как и регулярные выражения. Без этих двух технологий в программировании сейчас никуда.

В других языках LINQ маскируется как fluent-интерфейс, стримы и т.п.
0
Antony41
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 11
10.07.2018, 22:54  [ТС] 5
Про подключение с использованием ADO сразу стало всё понятно, но стало понятно и что придется писать запросы в SQL синтаксисе, зная как при этом шагнул вперед язык запросов LINQ (хотя на этом этапе уже в голову лезут мысли а точно ли LINQ лучше SQL).
Честно говоря сразу начал поверхностное изучение EF + LINQ, но... что то меня остановило... и переключился на SQL + LINQ.
Надо просто собрать мысли и еще раз пройтись по теме EF + LINQ. Так как хочется реализовать проект быстрее не знаю за что хвататься
за fluent-интерфейс обязательно прочту впервые слышу
0
amr-now
Эксперт JS
1559 / 903 / 380
Регистрация: 14.06.2018
Сообщений: 2,281
10.07.2018, 22:59 6
Antony41, Connection, Command, Reader идеальны для простеньких проектов. Как раз для начального этапа изучения.
Продолжайте дальше изучать и использовать хранимые процедуры SQL.
А LINQ надо знать как автомат Калашникова. Начните с LINQ to Objects, затем продолжайте EF + LINQ.
0
Antony41
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 11
10.07.2018, 23:18  [ТС] 7
Еще раз спасибо! Буду пробовать! Если что отпишусь по мере возникновения вопросов или создам новый топик!
0
Usaga
Эксперт .NET
5547 / 3755 / 663
Регистрация: 21.01.2016
Сообщений: 14,952
Завершенные тесты: 2
11.07.2018, 05:51 8
Цитата Сообщение от amr-now Посмотреть сообщение
LINQtoSQL слишком узкое направление в части MS SQL и негибкое.
Это устаревшая технология, она была влита в EF где-то в версии EF4 или EF5 (автор один и тот же).

Цитата Сообщение от amr-now Посмотреть сообщение
Продолжайте дальше изучать и использовать хранимые процедуры SQL.
Не надо подпинывать человека на использование хранимых процедур там, где можно обойтись простыми запросами)

Antony41, ADO.NET можно и нужно использовать, когда нужна максимальная гибкость в плане выполняемых запросов (при этом приложение может быть любых размеров - как крохотное, так и огроменное) или когда приложение крохотное и запросов мало и они простые.

Использование разного рода мощных ORM строящих запросы из LINQ-выражений упрощает и облегчает поддержку кода, но сильно ограничивает в гибкости возможных запросов. Так же, у взрослых ORM есть заметный (от "еле" до "офигенно") оверхед, что и понятно, ибо ORM должна разобрать ваше выражение, валидировать его и на его основе сформировать SQL-запрос. А это время и память. Да и запрос может оказаться громоздким и сложным для последующего разбора в памяти.

Но знать и уметь нужно и ручную работу с SQL (с помощью голого ADO.NET или ADO.NET + Dappet.NET) и взрослые ORM типа Entity Framework или LINQ to DB (не путать с почившей LINQ to SQL!), ибо место под солнцем есть всем подходам.
1
amr-now
Эксперт JS
1559 / 903 / 380
Регистрация: 14.06.2018
Сообщений: 2,281
11.07.2018, 06:20 9
Цитата Сообщение от Usaga Посмотреть сообщение
Не надо подпинывать человека на использование хранимых процедур там, где можно обойтись простыми запросами)
Не помню ни одного промышленного программного продукта в области бизнеса, где отсутствуют хранимые процедуры, триггеры, вьюхи и джобы.
Где можно обойтись простыми запросами - опять слишком узкий круг задач. Ценность программиста, не знающего SQL, очень низкая.
0
Usaga
Эксперт .NET
5547 / 3755 / 663
Регистрация: 21.01.2016
Сообщений: 14,952
Завершенные тесты: 2
11.07.2018, 06:49 10
amr-now, присутствуют хранимые процедуры и использовать их везде - разные вещи.

В наших продуктах тоже есть хранимки и на них был сделан упор. Теперь мы от этого страдаем. Есть места, где хранимкам место (чаще всего в отчётах), но использовать везде и всюду их я крайне не рекомендую.
0
amr-now
Эксперт JS
1559 / 903 / 380
Регистрация: 14.06.2018
Сообщений: 2,281
11.07.2018, 06:55 11
Usaga, люди страдают от любого крупного старого проекта. И наоборот бывают случаи, когда приходится отказаться от EF и перейти на Connection, Command, Reader.
0
Usaga
Эксперт .NET
5547 / 3755 / 663
Регистрация: 21.01.2016
Сообщений: 14,952
Завершенные тесты: 2
11.07.2018, 07:00 12
amr-now, я хотел сказать, что хранимые процедуры нужно применять только там, где это реально нужно, ибо они несут с собой определённые проблемы.

EF тоже тот ещё фрукт. На больших проектах использовать EF становится сильно накладно: большой контекст (или группа маленьких, тут без разницы) начинает греться неприлично долго, а ограниченные возможности в построении запросов начинают мешать больше, чем вообще приносит пользы вся эта кухня.
1
An70ni
0 / 0 / 0
Регистрация: 11.07.2018
Сообщений: 24
11.07.2018, 20:43 13
а почему не fluent nhibernate? там же можно писать запросы хоть на Linq, хоть на чистом sql. хотя для сложных вещей конечно придется попотеть разбираясь во внутреннем устройстве
0
Antony41
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 11
11.07.2018, 20:48  [ТС] 14
ADO.NET EntityDataModel? в эту сторону смотреть?
или LINQ to DB?
Еще вопрос поддерживают ли эти технологии оповещения от БД? вот пример реализации на Delphi.
0
Usaga
Эксперт .NET
5547 / 3755 / 663
Регистрация: 21.01.2016
Сообщений: 14,952
Завершенные тесты: 2
12.07.2018, 04:34 15
An70ni, nhibernate уже давно не хвалят, EF его обошёл по удобству и производительности.

Antony41, я выше уже дал рекомендацию: научитесь работать с голым SQL (с поддержкой Dapper для мапинга, ибо в этом моменте ничего особо полезного нет) и уже только потом беритесь за большие ORM.

Не поняв и не научившись вручную выгребать данные, вы не будете понимать какие запросы формируют ORM. А без этого, с помощью ORM, такие безобразные запросы будете писать, что просто туши свет. И плеваться будете, мол какое эти ORM гомно тормозное...
0
Antony41
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 11
12.07.2018, 06:50  [ТС] 16
Я умею писать запросы на чистом SQL вложенные процедуры и имею понимание как их строить где применять. Хотел бы изучить технологию LINQ.
0
Usaga
Эксперт .NET
5547 / 3755 / 663
Регистрация: 21.01.2016
Сообщений: 14,952
Завершенные тесты: 2
12.07.2018, 07:12 17
Antony41, ну берите, да изучайте: LINQ to DB, Entity Framework 6, Entity Framework Core.
0
An70ni
0 / 0 / 0
Регистрация: 11.07.2018
Сообщений: 24
12.07.2018, 07:45 18
Usaga,Это про Core? nhibernate имеет поддержку множества бд, в отличие от EF. тут наверное надо смотреть на то, что тебе нужно.
0
Usaga
Эксперт .NET
5547 / 3755 / 663
Регистрация: 21.01.2016
Сообщений: 14,952
Завершенные тесты: 2
12.07.2018, 07:46 19
Цитата Сообщение от An70ni Посмотреть сообщение
nhibernate имеет поддержку множества бд, в отличие от EF.
Это с потолка взято?
0
An70ni
0 / 0 / 0
Регистрация: 11.07.2018
Сообщений: 24
12.07.2018, 08:04 20
Usaga, походу да. не досмотрел)

Добавлено через 12 минут
Usaga, но тут еще надо смотреть версию .net, под которую писать

Добавлено через 15 секунд
Usaga, но тут еще надо смотреть версию .net, под которую писать
0
12.07.2018, 08:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2018, 08:04

Как распарсить http запрос, стоит ли использовать дополнительные классы
Задача состоит в следующем: имеется куча текстовых файлов, которые содержат POST- и GET-запросы,...

Стоит ли использовать 2 потока для асинхронного выполнения двух независимых операций
доброго всем времени суток. помогите разобраться: у меня проект C# FormApplication в нем есть 2...

MySql в C#. Стоит ли использовать? Какие возможны прОблемы и неудобства, в сравнении с Microsoft Sql Server
Есть возможность пользоваться бесплатным хостингом с MySql базой данных или платным с Microsoft Sql...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru