F# - какой ORM выбрать?

Я только начал играть с F# и задавался вопросом, есть ли какие-либо рекомендовано ОРМ там, для F#.

В C# я использовал NHibernate, который кажется довольно сложным и уродливым для реализации в F#. Я также думал об использовании plain old System.Data.SqlClient, но это как вернуться в каменный век...

какие предложения?

3 ответов


Я использую поддержку F# для LINQ to SQL при работе надfssnip.net. Это нормально, когда вам нужно загружать, редактировать, вставлять объекты, и это нормально для написания простых запросов. Он имеет некоторые приятные аспекты, например, вы можете использовать сплайсинга для составления частей запроса.

однако текущая реализация переводчика F# в LINQ не обрабатывает сложные запросы (вложенные вызовы функций, расширенная группировка и соединения), поэтому я написал несколько хранимых процедур. Эти можно красиво вызвать с помощью сгенерированных объектов LINQ, но вам нужно написать SQL.

альтернативно, если вы хотите использовать старомодный SqlClient, вы можете сделать его приятнее, используя динамический (? оператор). Я написал об этом в этот блог. Для простых сценариев это может быть довольно хорошая техника, потому что она очень проста.


Это может отсутствовать точка (например, если это только для образования или удовольствия), но если вы уже знаете, как использовать ORM в C#, почему бы просто не сделать это в C# в качестве библиотеки, а затем сделать остальную логику в F#? Одним из основных пунктов продажи для языков .NET является совместимость.


Я использую LINQ для SQL через F# PowerPack. Я использую ручное отображение (т. е. создание моего datacontext вручную, создание моих классов POCO, а также написание XML-файла для определения макета базы данных). Кажется, это хорошо работает в F# из того, что я сделал до сих пор.