F # и инструмент ORM - PullRequest
       11

F # и инструмент ORM

1 голос
/ 24 января 2011

Я хотел бы узнать ваш лучший опыт работы с инструментами F # и ORM.F # + LINQ 2 SQL имеет некоторые сложности ?

1 Ответ

8 голосов
/ 24 января 2011

В текущей версии поддержка LINQ в F # не так гладка, как в C #, но ее можно использовать довольно хорошо. Я использовал F # + LINQ to SQL при реализации F # Snippets Web и смог написать почти все, используя F #. Есть даже несколько приятных функций, которые вы не получите в C #.

Синтаксис для базовых запросов основан на выражениях в кавычках:

let q = <@ seq { for c in db.Customers do
                   if c.Country = "UK" then yield c.Name } @>

Хорошая вещь в F # заключается в том, что вы можете использовать объединение цитат для рефакторинга вашего кода:

let ukCustomers = 
  <@ seq { for c in db.Customers do 
             if c.Country = "OK" then yield c } @>

// Select names of all UK customers
let q = <@ seq { for c in %ukCustomers -> c.Name }

Относительно ограничений поддержки F #:

  • Я не думаю, что есть какие-либо проблемы с обновлениями (как подразумевается в связанном вопросе).

  • Возможно, самым большим ограничением текущей версии является ограниченная поддержка вложенности запросов (например, использование Seq.filter внутри тела цикла for), но это должно быть исправлено в следующей версии PowerPack (на самом деле, если вы скомпилируете его из исходного кода, вы можете получить его уже)

  • Если вы можете выбрать, я бы рекомендовал использовать LINQ to SQL вместо LINQ to Entities. LINQ to Entities не очень хорошо работает с неизменяемыми типами, поэтому вы не можете легко возвращать записи F # и кортежи F #. Опять же, это, вероятно, улучшится в будущем (я недавно поработал над этим, и вы можете найти первоначальную поддержку в источниках F # PowerPack)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...