我应该在SqlClr中运行F#吗?

时间:2011-03-18 13:56:38

标签: c# sql-server f# sqlclr

我需要在Sql中运行.Net代码,我试图在F#和C#之间做出决定。 我现在在F#中做的代码越来越多,所以如果它不是太不切实际,我希望它是F#。

是否有可能强制VS2010将我的F#程序集(及其引用)部署到Sql Server,这与C#项目的方式相同?

你会建议/不建议在Sql中运行F#吗?为什么呢?

修改 我同意语言更好,这不是问题。我主要想知道是否有人在SqlClr中使用F#的经验,特别是如果工具可以提供简单的开发工作流程,即在VS2010中部署。

编辑2: 我正在试验这个,手动注册是非常痛苦的。除了CREATE ASSEMBLY之外,您还必须注册每个函数,sp,聚合等。您还必须先按正确的顺序删除它们,如果它们存在,以免得到DROP ASSEMBLY failed because 'Nibbler' is referenced by object 'Hello'.

然后我有了使用C#项目作为前端的想法,让这个项目引用一个F#项目,只是为了让所有这些部署自动处理。事实证明,您只能引用其他C#/ VB Sql Clr项目或已在Sql中引用的程序集。这仍然可以简化部署,因为所有功能的创建/删除等都将自动处理。然后,为了从测试部署到生产,我只会从我的测试环境中注册的所有内容生成脚本。

PS。我还试图摆弄.fsproj文件,与C#Clr项目的.csproj进行区分,以使部署无效。

2 个答案:

答案 0 :(得分:12)

如果在SQL CLR上下文中遇到FSharp.Core和其他引用问题,可以尝试使用--standalone compiler flag将外部引用嵌入到部署到SQL Server的程序集中

答案 1 :(得分:8)

我建议您在F#中编写CLR UDF /程序的原因与我建议在F#中编写几乎任何的原因相同(请参阅SO上的大量F#与C#问题)。我想不出有什么理由喜欢C#用于任何。我没有尝试使用VS将程序集部署到SQL Server,但是CREATE ASSEMBLY工作得很好......并且无论编程语言如何都一样。