Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LINQ, кто пробовал? 
:(
    Опции темы
QryStaL
Дата 24.12.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Кто-нибудь разбирался, тестировал новую фичу C# LINQ? Есть какие-то проблемы/недостатки/особенности? Интересно оценить перспективы...


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
tol05
Дата 24.12.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Бегло ознакомился. Не понравился. 

Особенностей много - это новый принцип запросов - для представления не реляционных источников данных, а  объектно-ориентированных источников данных. Но поскольку физически данные хранятся в реляционном виде, то отсюда недостатки LINQ - громозкая и ИМХО не очень понятная мне пока архитектура и, как и все оболочки, уменьшение быстродействия.

Опять же могу ошибаться

Цитата(QryStaL @  24.12.2007,  10:52 Найти цитируемый пост)
Интересно оценить перспективы

Sql Server 2008 будет поддерживать как T-SQL, так и LINQ


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
stab
Дата 24.12.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



побаловался немножко. при некотором опыте синтаксис запросов выглядит куда приятней\нагляднее\понятнее, чем циклы по тем же наборам, но в C# синтаксис LINQ несколько незавершённый, часто приходится прибегать к лямбдам; это, думаю, поправят в следующем релизе. ну и скорость немного помедленей, чем чистые циклы, что некритично для меня, т.к. моделировать реакции ядерного синтеза на C# не требуется.

перспективы.. уж точно не выкинут его из .NET, раз добавили; так чта, будут развивать, поддерживать и проталкивать. smile


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
D_F_V
Дата 25.12.2007, 04:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 27.3.2007
Где: Vladivostok

Репутация: 1
Всего: 1



PM MAIL ICQ MSN   Вверх
1stain
Дата 25.12.2007, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 8
Всего: 40



D_F_V, похожий пример пример, как в ссылке делается через System.Configuration.ConfigurationSection, содержащий ConfigurationElementCollection без геморроя с парсингом XML, как в примере. Интересно было бы сравнить скорость выполнения.


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
RWander
Дата 27.12.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: 1
Всего: 6



LINQ – недостающее звено в разработке баз данных
Цитата

Новая технология Microsoft под названием Language Integrated Query (LINQ) дает программистам возможность устанавливать доступ к базе данных и источникам XML данных посредством расширений запросов, добавленных Microsoft в .NET Framework. LINQ закрывает одну из крупнейших брешей, существующих в сегодняшней модели разработки баз данных.

По сложившейся на настоящий момент практике разработчики баз данных, пользуясь объектно-ориентированным языком, таким как C# или Visual Basic .NET (VB.NET), создают клиентское приложение и объекты обработки бизнес данных, которые существуют на уровне данных, а ADO.NET является промежуточным программным обеспечением доступа к данным, которое соединяет приложение с базой данных. Однако, когда коду ADO.NET в ядре этих программ необходимо обратиться к базе данных, программист должен выйти за рамки объектно-ориентированной разработки Visual Studio (VS) и сконструировать запрос SQL, который отправляется на сервер. Компилятор в данном случае не может гарантировать разработчикам, что они работали с правильными таблицами или столбцами базы данных. Он даже не может проверить корректность синтаксиса запроса, поскольку запрос реально не исполняется, пока приложение работает.



Эта проблема решается в новой технологии LINQ путем реализации привязки объекта к базе данных и предоставления набора операторов, которые позволяют разработчику создавать запросы к базе данных непосредственно в коде .NET. Операторы, подобные операторам SQL, поддерживают извлечение данных, а также операции вставки, обновления и удаления – например, в LINQ имеются инструкции Select, Where и OrderBy. В этом первоначальном релизе оператор Select должен появляться в конце выражения в программах на C#, но в программах на VB оператор Select появляется привычно в начале.

Для облегчения процесса привязки базы данных к объекту, ранние бета-версии LINQ содержали инструмент, который мог генерировать таблицы и классы базы данных на основе объектов в целевой базе данных. LINQ не обладает совершенным механизмом привязки одной или нескольких реляционных таблиц к объектам обработки бизнес-данных, больше того, он создает простую связь один-к-одному между реляционными таблицами и программными объектами. Важно понимать следующее: несмотря на то, что LINQ воплощает новую модель разработки баз данных, эта технология не является полной заменой ADO.NET. Фактически LINQ использует ADO.NET, а приложение может извлечь пользу как от одной, так и от другой технологии. Несмотря на наличие объектно-ориентированного интерфейса для обращения к базе данных, по сути, как вы, наверное, догадались, LINQ по-прежнему направляет запросы SQL на сервер базы данных.

Хотя LINQ позиционируется как инструмент, способный сильно изменить будущую разработку для баз данных, нынешняя его версия являет собой только раннюю стадию развития. Подобно провайдерам данных ADO.NET, провайдеры LINQ используют открытую архитектуру, что позволяет сторонним поставщикам баз данных создавать провайдеры, которые работают со стандартом LINQ. Однако в настоящий момент LINQ работает только с SQL Server и не работает с Oracle и IBM DB2. Также, первоначальный выпуск запускается только на стороне клиента. Ясно, что следующим логичным шагом для LINQ стала бы возможность исполняться на сервере в среде управления на Common Language Runtime (CLR).

Для разработчиков для баз данных LINQ, пожалуй, самая значительная смена парадигмы с момента прихода ODBC. LINQ устраняет разрыв между приложением и базой данных и обеспечивает полностью объектно-ориентированный доступ к базе данных. Дополнительная информация о проекте LINQ – на сайте


Добавлено через 2 минуты и 37 секунд
очень не понравилось, что на данный момент нет возможности работы с другими СУБД, кроме SQL Server


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
RWander
Дата 29.12.2007, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: 1
Всего: 6



немного поюзал LINQ и убедился, что нетакая уж и плахая это штука.. очень понравилась возможность работать с реляционной базой данных как с объекто-ориентированной.. очень удобно..


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
mr.DUDA
Дата 29.12.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Насколько я понял, суть LINQ при работе с БД заключается в том, что используя C# мы пишем длинный составной SQL-запрос к базе, который выполняется при первом foreach.


--------------------
user posted image
PM MAIL WWW   Вверх
Mymik
Дата 29.12.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 1
Всего: 78



Цитата(RWander @  27.12.2007,  21:24 Найти цитируемый пост)
Также, первоначальный выпуск запускается только на стороне клиента.

я так понял, что "клиент" это GUI приложение ???
Ну и прочитав описание этой технологии несколькими постами выше, я начал думать, что LINQ не проберется в asp.net с SQL Server'ом. Потому что там используются Stored Procedure которые увеличивают производительность и защищенность от SQL-inj. Ну и потом, это опять получается, что Microsoft переходит к двухзвенной структуре общения, а ведь она этим так гордилась... мне это не сильно нравится.
Я ж надеюсь мы не скатимся до PHP программистов, которые выгружают из СУБД всю таблицу, а потом начинают с ней работать и забирать только нужные ей записи... 


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
RWander
Дата 29.12.2007, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: 1
Всего: 6



Цитата(Mymik @  29.12.2007,  13:58 Найти цитируемый пост)
Я ж надеюсь мы не скатимся до PHP программистов, которые выгружают из СУБД всю таблицу, а потом начинают с ней работать и забирать только нужные ей записи...

похоже так и есть..)



--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
Zakonnic
Дата 29.12.2007, 12:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 25.4.2006

Репутация: 2
Всего: 6



Ребят, а рефлектором никто его не смотрел? Хорошо бы узнать принципы работы поконкретнее, без предположений. 

Но кстати в одном блоге был пример теста скорости линка на огромном массиве интов - работает примерно в 1.5-2 раза медленнее цикла for. Приемлемая производительность, если без фанатизма. Другое дело - нет ли каких оптимизаций в плане доступа к БД и алгоритмов обработки запросов от ЛИНКа?
--------------------
...и никогда не пишите в комментариях правду
PM MAIL ICQ   Вверх
PashaPash
Дата 4.1.2008, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(RWander @  29.12.2007,  12:08 Найти цитируемый пост)
похоже так и есть..)

Неа, все совсем не так. Загрузка всей базы, и работа с ней на клиентской стороне - это датасеты. 
Основная фишка LINQ - операции над запросами, а не над самими данными. Если в Linq to SQL пару раз вызвать Where, сгруппировать, отсортировать, а потом попробовать у результата взять First(), то из базы выберется только одна строка. Т.е. стандартные провайдеры LINQ откладывают вычисления до последнего момента, пока вы сами не захотите получить конкретные данные. Вот и вся оптимизация :(


--------------------
PM MAIL WWW   Вверх
source777
Дата 8.1.2008, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 4
Всего: 56



Цитата(tol05 @  24.12.2007,  10:28 Найти цитируемый пост)
отсюда недостатки LINQ - громозкая и ИМХО не очень понятная мне пока архитектура и, как и все оболочки, уменьшение быстродействия.
один представитель MS убеждал меня, что LINQ работает быстрее, чем обычные SQL-запросы, т.к. создаёт максимально оптимизированные запросы, которые вручную писать гораздо дольше и сложнее... smile 


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
mr.DUDA
Дата 8.1.2008, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(source777 @  7.1.2008,  23:00 Найти цитируемый пост)
один представитель MS убеждал меня, что LINQ работает быстрее, чем обычные SQL-запросы, т.к. создаёт максимально оптимизированные запросы, которые вручную писать гораздо дольше и сложнее...

Зато убивается возможность оптимизировать запросы на стороне БД, т.к. каждый раз идёт новый запрос со своим SQL и соотв. планом выполнения. Убийство.


--------------------
user posted image
PM MAIL WWW   Вверх
source777
Дата 10.1.2008, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 4
Всего: 56



Цитата

Зато убивается возможность оптимизировать запросы на стороне БД, т.к. каждый раз идёт новый запрос со своим SQL и соотв. планом выполнения.
да, это не есть хорошо, ну для MS SQL Server что-нить и на этот счёт придумают smile 


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1091 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.