2009-11-26 77 views
4

對於f#來與數據庫交談,我認爲你會轉向一些看起來很像C#代碼的代碼,使用一些.NET庫(例如ado.net)以及相當多的命令式代碼,根據定義,相當多的副作用..F#數據庫編程與C#數據庫編程相同嗎?

或者我錯過了什麼嗎? F#還有一些美容品在這個領域提供嗎?

而且有人會爲我提供一個從寫入數據庫中讀取數據的例子嗎?

+9

不,它高出一半八度。 :) – cletus 2009-11-26 07:32:12

回答

2

你可能想在這個問題中使用接受的答案作爲一個很好的起點。

F# Beginner: retrieving an array of data from a server

取決於數據庫使用的是你可能會得到一些其他的選擇,但隨着一些相當功能開始和你獲得的經驗,你可以改善它。

4

當我需要在測試項目中通過F#進行一些數據庫訪問時,我最終使用了F#中的LINQ to SQL。我只是在解決方案中添加了一個C#項目,將DataContext放在C#項目中,並在我的F#項目中使用生成的C#LINQ to SQL類。

首先你需要引用程序集FSharp.PowerPack and FSharp.PowerPack.Linq。那麼你可以open Microsoft.FSharp.Linq

下面是一個例子,它解析XDocument中的「Site」標籤,創建類的實例(一個C#生成的LINQ to SQL類),然後使用L2S數據上下文將它們插入到數據庫中。你可以看到,儘管它使用C#類,但它並不完全是命令式的代碼。

下面是使用LINQ的F#版本查找數據庫中所有站點條目的最大排名的示例。是的,這會轉換爲SQL並在數據庫中執行。

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

最後,這裏是一些more information on LINQ with F#