F# 错误 FS3033 不受支持的 DbType 'Structured'

F# Error FS3033 unsupported DbType 'Structured'

我正在尝试在 F# 中查询我们的数据库,但在获取数据上下文时遇到很多错误。 这是我的连接命令:

#r "System.Data.dll"
#r "FSharp.Data.TypeProviders.dll"
#r "System.Data.Linq.dll"

open System
open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq

type dbSchema = SqlDataConnection<"Data Source=OCPM;Initial Catalog=Nautilus;Integrated Security=SSPI;">
let db = dbSchema.GetDataContext()

在这个简单的脚本之后总共返回了 147 个错误,我不会一一列举,但这里有几个例子:

我认为这是由于我们数据库中使用的对象和结构的复杂性。第一个错误是由于函数 utvf_VehiclesSummaryUDT 中名为 udt_IncidentExposure 的用户定义 Table 类型引起的。第二个是因为临时table #updatedPriceTab是在asynch.usp_LBNGBasket中调用的,但在另一个存储过程中创建的。

我对 F# 和 SQL 服务器在复杂结构上的有限兼容性感到惊讶。在 F# 中还有其他方法可以连接到 SQL 服务器吗?我只需要做非常简单的 SQL 查询。

附加信息:SQL正在使用的服务器版本是 10.50.4270

您可以从这里尝试其他 F# 类型的提供程序: http://fsharp.org/guides/data-access/#sql-data-access

MS SQL 服务器的最佳 (IMO) 是 FSharp.Data.SqlClient,但我认为它仅支持 2012 及更高版本。

使用生产质量 SqlClient type provider 你运气不好,因为它至少需要 SQL2012 年才能运行。

你可以试试SQL Type Provider,虽然我没有任何在生产场景中使用它的经验。

您也可以尝试使用 SqlEntityConnection type provider,它有时比您尝试过的 SqlDataConnection 类型提供程序做得更好。

最后,作为最后的手段,没有什么可以阻止您通过纯 ADO.NET.

从 F# 访问 SQL