Мозаичный форум  

Вернуться   Мозаичный форум > О мире > Цифровые технологии, программирование и сайтостроительство
Галерея Справка Пользователи Календарь Сообщения за день

Цифровые технологии, программирование и сайтостроительство Полупрофессиональный подраздел. Подробное описание раздела находится в прикреплённой теме.

Ответ
 
Опции темы
Старый 28.07.2009, 02:21   #1
Modus
дитя Ренессанса
 
Аватар для Modus
 
Регистрация: 29.05.2008
Сообщений: 2,346
Modus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастер
Злость Linq

Полтора года назад я начал разрабатывать фреймворк Botan, включающий в себя ORM и генератор форм. Сейчас он в несколько доработанном виде внедрен в реальную практику, и я, удовлетворив свои творческие амбиции и наигравшись в красивую архитектуру, решил больше не выпендриваться, и освоить-таки стандартный Linq2Sql. Я и раньше бегло изучал этот ORM, и он казался мне очень неплохим.

Через полчаса после попытки сделать на нём пробное приложение радость удалилась далеко и надолго. Похоже, что на трансляции лямбда-выражений в SQL-запросы его прелести заканчиваются. То, что для обработки изменений значений свойств он генерирует partial-методы, воспроизводится за полчаса: большая трудоёмкость только в создании обработчика лямбда-выражений. Причём большая настолько, что делать это самому - сущее безумие.

Я давно уже думал о том, чтобы прикрутить к Botan класс SqlProvider, который преобразует лямбда-выражения в SQL-запросы в Linq2Sql, но пока не придумал как. Похоже, что придётся обойтись без этой доли прогрессивного синтаксического сахара и сидеть на старом добром паттерне Query object.

Вот уж воистину, свои велосипеды ближе к телу. При всём уважении к Microsoft.
__________________
Инструменты сердятся, когда на них не играют
Modus вне форума   Ответить с цитированием
Старый 28.07.2009, 02:38   #2
Makinson
take a look
 
Аватар для Makinson
 
Регистрация: 03.03.2008
Сообщений: 2,119
Makinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душой
неправильно ты дядя Фёдор бутерброд ешь...
Makinson вне форума   Ответить с цитированием
Старый 28.07.2009, 07:05   #3
Виктор
Мохнатый Красношёрстный
 
Аватар для Виктор
 
Регистрация: 01.04.2006
Адрес: Красноярск
Сообщений: 2,476
Виктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастер
Modus, а если взять заведомо упрощённый синтаксис. Сходу могу порекомендовать синтаксис @ функций от LotusNotes. @Функция(Параметр1; Параметр2; Параметр3;..)
__________________
Хрю-Кхе-Кхе
Обитающий в ЖЖ: http://victor-zagorski.livejournal.com
Виктор вне форума   Ответить с цитированием
Старый 28.07.2009, 10:35   #4
Modus
дитя Ренессанса
 
Аватар для Modus
 
Регистрация: 29.05.2008
Сообщений: 2,346
Modus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастер
В LotusNotes задача языковой интеграции не решена. По идее, фишка Linq как раз в том, что запросы к базе пишутся прямо в коде на C# со всеми примуществами строгой типизацией и т.п. После работы в Axapta я относился к Linq в духе "давно пора".

А так - что в связке .NET + SQL, что в Lotus Notes, императивная часть и функцональная пишутся на разных языках, которые как-то друг с другом взаимодействуют. Я хотел отойти от методов 2005 года, перейти на более современные технологии, но столкнулся с тем, что они нифига не удобнее.

Макинсон, а как правильно?
__________________
Инструменты сердятся, когда на них не играют
Modus вне форума   Ответить с цитированием
Старый 28.07.2009, 10:42   #5
Виктор
Мохнатый Красношёрстный
 
Аватар для Виктор
 
Регистрация: 01.04.2006
Адрес: Красноярск
Сообщений: 2,476
Виктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастер
Да, не решена, только это глюк не синтаксиса, а среды.

Я этот синтаксис потому предложил, что он однозначный, парсер писать -- плёвое дело. Остаётся только словарь определить. Ну и изначально заложить расширяемость.
__________________
Хрю-Кхе-Кхе
Обитающий в ЖЖ: http://victor-zagorski.livejournal.com
Виктор вне форума   Ответить с цитированием
Старый 28.07.2009, 11:06   #6
Modus
дитя Ренессанса
 
Аватар для Modus
 
Регистрация: 29.05.2008
Сообщений: 2,346
Modus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастер
Парсер там в принципе не нужен. Лямбда-выражения в C# уже приходят в виде дерева. Нужно по этому дереву построить запрос SQL. Я не владею математическим аппаратом преобразования одного дерева в другое, да и представление лямбда-выражений в виде дерева простотой не отличается. DevExpress'овские фильтры я в свою объектную модель запроса уже преобразую, но кривовато, работает только в простых случаях (для реальной практики годится, потому что сложные случаи маловероятны).

Кстати, Макинсон, очень рад тебя видеть тут в добром здравии.
__________________
Инструменты сердятся, когда на них не играют
Modus вне форума   Ответить с цитированием
Старый 28.07.2009, 11:35   #7
Виктор
Мохнатый Красношёрстный
 
Аватар для Виктор
 
Регистрация: 01.04.2006
Адрес: Красноярск
Сообщений: 2,476
Виктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастерВиктор мастер
Формат дерева покурить где можно? Может тоже где заюзаю.
__________________
Хрю-Кхе-Кхе
Обитающий в ЖЖ: http://victor-zagorski.livejournal.com
Виктор вне форума   Ответить с цитированием
Старый 28.07.2009, 14:07   #8
Modus
дитя Ренессанса
 
Аватар для Modus
 
Регистрация: 29.05.2008
Сообщений: 2,346
Modus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастер
Ничего лучше чем http://blogs.msdn.com/charlie/archiv...ee-basics.aspx не нагуглил.
__________________
Инструменты сердятся, когда на них не играют
Modus вне форума   Ответить с цитированием
Старый 28.07.2009, 16:44   #9
Makinson
take a look
 
Аватар для Makinson
 
Регистрация: 03.03.2008
Сообщений: 2,119
Makinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душойMakinson мастер, работающий с душой
Спасибо.
Я не знаток этой тематики...
Makinson вне форума   Ответить с цитированием
Старый 28.07.2009, 17:49   #10
Modus
дитя Ренессанса
 
Аватар для Modus
 
Регистрация: 29.05.2008
Сообщений: 2,346
Modus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастерModus мастер
Тогда что ты имел в виду этой цитатой?
__________________
Инструменты сердятся, когда на них не играют
Modus вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 23:33.