Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#-选择哪种ORM?_Orm_F# - Fatal编程技术网

F#-选择哪种ORM?

F#-选择哪种ORM?,orm,f#,Orm,F#,我刚开始玩F#,想知道是否有推荐的ORM用于F# 在C#中,我使用了NHibernate,这在F#中似乎很难实现,也很难看。我还考虑过使用普通的System.Data.SqlClient,但这就像回到石器时代一样 有什么建议吗 这可能没有抓住要点(比如这只是为了教育或娱乐),但是如果你已经知道如何在C#中使用ORM,为什么不把它作为库在C#中使用,然后在F#中执行其余的逻辑呢?NET语言的主要卖点之一是互操作性 我一直在通过F#PowerPack使用linqtosql。我正在使用手动映射(即手动

我刚开始玩F#,想知道是否有推荐的ORM用于F#

在C#中,我使用了NHibernate,这在F#中似乎很难实现,也很难看。我还考虑过使用普通的
System.Data.SqlClient
,但这就像回到石器时代一样


有什么建议吗

这可能没有抓住要点(比如这只是为了教育或娱乐),但是如果你已经知道如何在C#中使用ORM,为什么不把它作为库在C#中使用,然后在F#中执行其余的逻辑呢?NET语言的主要卖点之一是互操作性

我一直在通过F#PowerPack使用linqtosql。我正在使用手动映射(即手动创建datacontext、创建POCO类以及编写XML文件来定义数据库布局)。从我到目前为止所做的工作来看,它在F中似乎工作得很好。

我在开发Linux时一直在使用对LINQ to SQL的F#支持。当您需要加载、编辑、插入实体时,它是很好的,而编写简单查询时,它也是很好的。它有一些好的方面,例如,您可以使用拼接来组成查询的一部分

然而,F#to LINQ translator的当前实现无法处理复杂的查询(嵌套函数调用、高级分组和联接),因此我编写了一些存储过程。这些可以通过生成的LINQ对象很好地调用,但是您必须编写一些SQL


或者,如果您想使用老式的
SqlClient
,您可以通过使用动态(
)操作符使它变得更好。我在一本书中写过这件事。对于简单的场景,这可能是一种非常好的技术,因为它非常简单。

使用F#与数据库交互的两个选项是和。

在您的博客文章中介绍了如何使用
SqlClient
似乎非常好。。。但是,我无法与实体(POCO)一起工作,这让我感到困扰:(-同样,在我读过之后,LINQ to SQL是一个正在消亡的ORM?+1,对于您的动态实现来说。开发人员追求ORM是因为他们想要简单,不幸的是,这是很少有ORM提供的。我将给LINQ to SQL一个机会。至少在EF代码首次发布或NHibernate赶上之前。+1。正如您所说,这可能会有一些教育意义不适合从F#ORM开始,但如果您已经熟悉C#库,那么重新使用C#库更为实用。F#中对现有DLL的支持非常好-我使用过很多次,从来没有遇到过问题。F#3.0将解决这个问题。