我刚开始玩F#,并想知道是否有任何推荐的 ORM在那里,对于F#。
在C#中我使用了NHibernate,这在F#中实现起来相当困难和难看。我也考虑过使用普通的System.Data.SqlClient
,但那就像回到石器时代......
有什么建议吗?
答案 0 :(得分:7)
在处理fssnip.net时,我一直在使用F#支持LINQ to SQL。当你需要加载,编辑,插入实体时它很好,它可以编写简单的查询。它有一些很好的方面,例如您可以使用拼接来组成查询的一部分。
但是,当前实现的F#到LINQ转换器不能处理复杂的查询(嵌套函数调用,高级分组和连接),所以我写了一些存储过程。这些可以通过生成的LINQ对象很好地调用,但是你必须编写一些SQL。
或者,如果您想使用旧式SqlClient
,则可以使用动态(?
)运算符使其更好。我在this blog post写了这篇文章。对于简单的场景,这可能是非常好的技术,因为它非常简单。
答案 1 :(得分:5)
这可能是缺少的(如果这只是为了教育或有趣),但如果您已经知道如何在C#中使用ORM,为什么不在C#中将其作为一个库,然后完成其余的工作F#中的逻辑? .NET语言的主要卖点之一是互操作性。
答案 2 :(得分:1)
我一直在通过F#PowerPack使用LINQ to SQL。我正在使用手动映射(即手动创建我的datacontext,创建我的POCO类以及编写XML文件来定义我的数据库布局)。到目前为止,它似乎在F#中运行良好。
答案 3 :(得分:0)
使用{#3}}和FSharp.Data.SqlClient使用F#与数据库进行交互的两个选项。