2012-02-12

metaclass: (Default)
2012-02-12 11:30 am

LINQ-To-SQL, LINQ-To-Entities и F# LINQ

Походу, широко разрекламированный hype на тему LINQ, генерации SQL из строго типизированных запросов, синтаксических деревьев, Expression и прочих монад и функциональщины, якобы работающих в дотнете - по меньшей мере, преувеличение.
Во-первых, микрософт, оказывается, сменил уже то ли две то ли три вариации на эту тему, и в каждой свои заморочки с наличием провайдеров к БД, их созданием, строками подключения, итд. С MSSQL, по идее, должно быть получше, чем с другими серверами, но судя по тому, что я вижу - хз, хз.
Во-вторых, кодогенерация SQL на императивном языке(даже с включением элементов функциональщины и вывода типов) - адский ад. Синтаксические деревья выглядят погано, код засран фабриками-визиторами-имитацией алгебраических типов данных и паттерн-матчинга на ООП.
В-третьих, даже в F#, где ад и функциональщина, я насчитал минимум три версии одного и того же синтаксиса для запросов (query expressions, quotations) - в версии 1(старая книга) - один, в бумажной книге Expert F# 2.0 - второй, в Preview от F# 3.0 - третий. Вот, например groupBy от второй версии (сделан наугад - документации я не нашел :):
Read more... )

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