【发布时间】:2010-11-29 08:11:56
【问题描述】:
从 F# 中测试 NoRM https://github.com/atheken/NoRM 并尝试找到一种使用它的好方法。这是基本的 C#:
class products
{
public ObjectId _id { get; set; }
public string name { get; set; }
}
using (var c = Mongo.Create("mongodb://127.0.0.1:27017/test"))
{
var col = c.GetCollection<products>();
var res = col.Find();
Console.WriteLine(res.Count().ToString());
}
这工作正常,但这是我从 F# 访问它的方式:
type products() =
inherit System.Object()
let mutable id = new ObjectId()
let mutable _name = ""
member x._id with get() = id and set(v) = id <- v
member x.name with get() = _name and set(v) = _name <- v
有没有更简单的方法来创建类或类型以传递给泛型方法?
它是这样称呼的:
use db = Mongo.Create("mongodb://127.0.0.1:27017/test")
let col = db.GetCollection<products>()
let count = col.Find() |> Seq.length
printfn "%d" count
【问题讨论】:
-
RavenDB 与 F# 配合得很好,他们的源代码树中有一些 F# 示例:github.com/ravendb/ravendb/tree/master/Samples/…
-
看起来很有趣,但是“如果你的项目是开源的,你可以免费使用 Raven。如果你想使用 Raven 来构建商业软件,你必须购买商业许可证。” ravendb.net/licensing
-
值得注意的是,RavenDB 现在有一个可以商业使用的免费许可证。但是它限制了可用内核的数量。见这里:ravendb.net/buy