为了让F#连接到数据库,我想你需要编写一些非常类似于C#代码的代码,使用一些.NET库(例如ado.net),并且大量使用命令式代码,其定义中具有相当多的副作用。
或者我理解错了吗?在这个领域中,F#是否也有一些美妙之处呢?
请问有人可以提供一个读取和写入数据库的示例吗?
open Microsoft.FSharp.Linq
。 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#类,但它并非完全命令式代码。
这是使用F#版本的LINQ查找数据库中所有站点条目的最大排名的示例。是的,这将被转换为SQL并在数据库中执行。
use db = new SomeDataContext()
Query.query <@ seq { for s in db.Sites -> s.Rank } |> Seq.max @>
最后,这里有一些关于使用 F# 进行 LINQ 的更多信息。
你可能希望使用这个问题中被接受的答案作为一个很好的起点。
根据你使用的数据库,你可能会得到其他选择,但是从一些相对功能较强的东西开始,并且随着经验的积累可以不断改进它。