Программирование базы данных F # такое же, как программирование базы данных C #? - PullRequest
4 голосов
/ 26 ноября 2009

Чтобы f # мог общаться с базой данных, я полагаю, что вы обратились к некоторому коду, который очень похож на код C #, с использованием некоторых библиотек NET (например, ado.net) и довольно большого количества императивного кода, который по определению , довольно много побочных эффектов ..

Или я что-то здесь упускаю? Может ли F # предложить что-то прекрасное в этом домене?

А кто-то может так любезно предоставить мне пример для чтения из записи в базу данных?

Ответы [ 2 ]

4 голосов
/ 01 декабря 2009

Когда мне нужно было получить доступ к базе данных из F # в тестовом проекте, я использовал LINQ to SQL из F #. Я просто добавил проект C # в решение, поместил DataContext в проект C # и использовал сгенерированные классы C # LINQ to SQL в своем проекте F #.

Сначала вам нужно сослаться на сборки FSharp.PowerPack и FSharp.PowerPack.Linq . Тогда вы можете open Microsoft.FSharp.Linq.

Вот пример, который анализирует теги «Site» из XDocument, создает экземпляры класса Site (сгенерированный C # класс LINQ to SQL), а затем вставляет их в базу данных, используя контекст данных L2S.

let sites = doc.Descendants(ns + "Site")
            |> Seq.map (fun el -> new Site (
                                      Url = xstr(el.Element(ns + "DataUrl")),
                                      Rank = xint(el.Element(ns + "Rank"))
                                  ))
use db = new SomeDataContext()
db.Sites.InsertAllOnSubmit(sites)
db.SubmitChanges()

Как вы можете видеть, хотя он и использует классы C #, это не совсем обязательный код.

Вот пример использования версии LINQ для F #, чтобы найти максимальный ранг всех записей сайта в базе данных. Да, это переводится в SQL и выполняется в базе данных.

use db = new SomeDataContext()
Query.query <@ seq { for s in db.Sites -> s.Rank } |> Seq.max @>

Наконец, вот некоторая дополнительная информация о LINQ с F # .

2 голосов
/ 26 ноября 2009

Вы можете использовать принятый ответ в этом вопросе в качестве хорошей отправной точки.

F # Новичок: получение массива данных с сервера

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

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