f# - 如何使用 F# 中的类型提供程序连接到 SQL Server Compact Edition 4.0?

标签 f# sql-server-ce type-providers

我正在尝试从 F# 连接到 SQL Server Compact Edition 数据库,并尝试使用类型提供程序。这是在 Visual Studio 11 Beta 中,所以我意识到可能因此存在问题,但我认为更有可能是我还没有专业知识。

但是,我注意到 Microsoft.FSharp.Data.TypeProviders 中没有特定于 CE 的类型提供程序,我不确定常规的 SqlDataConnection 是否可以解决问题,因此这可能就是问题所在。

但是,当我尝试创建连接时,IDE 似乎至少认识到我正在尝试访问 CE 数据库。

所以,我有以下代码:

type SqlConnection = 
  Microsoft.FSharp.Data.TypeProviders
    .SqlDataConnection<ConnectionString = @"Data Source=C:\\Path\\Database.sdf">
let db = SqlConnection.GetDataContext()

所以它是非常标准的,或多或少是直接从添加新的 LINQ to SQL 和类型提供程序项菜单中提取出来的。

我通过连接字符串得到的工具提示是“未安装提供程序‘System.Data.SqlServerCe.3.5’。”向上看似乎表明没有安装 Sql Server CE 是一个问题,但我有库,能够使用常规 SqlCEConnection 连接到数据库并运行 SqlCeCommands 等。由于它是 4.0 而不是 3.5,我不确定它是否在寻找错误的提供者。我在 VS 11 beta 中创建了数据库,所以我认为所有版本都应该匹配等等。

简而言之,我想知道我是否做错了什么,或者 VS11 beta 类型提供程序库是否还不支持 CE 4.0,或者我是否需要做其他事情来实现它。

谢谢!

最佳答案

这个“适用于我的机器”(使用 VS 11 beta, Entity Framework ,基于此处的演练,http://msdn.microsoft.com/en-us/library/hh361038(v=vs.110).aspx:

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

let connectionString = "metadata=res://*/;provider=System.Data.SqlServerCe.4.0;provider connection string='data source=C:\\Data\\SQLCE\\Test\\nw40.sdf';"

type internal edmx = EdmxFile<"NWModel.edmx", ResolutionFolder = @"C:\Users\erik.COMMENTOR\Documents\Visual Studio 11\Projects\TestSqlCeFSharp">

let internal context = new edmx.nw40Model.nw40Entities(connectionString)

query { for supplier in context.Suppliers do
        select supplier }
|> Seq.iter (fun supplier -> printfn "%s" supplier.Company_Name)

添加了对以下内容的引用:
FSharp.Data.TypeProviders,
系统.数据.实体,
系统.Data.Linq

关于f# - 如何使用 F# 中的类型提供程序连接到 SQL Server Compact Edition 4.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10154849/

相关文章:

recursion - Deedle - 具有初始值的系列上的递归映射

c# - 如何在 Visual Studio 2015 Community 中创建本地数据库?

mysql - 解析查询时出错

.net - SQL Server CE数据库大小问题

windows-8 - F# TypeProvider 可以在 Windows 应用商店应用程序中使用吗?

F# Type Provider development : When providing a method, 如何获取变量个数和类型的参数?

arrays - 如何在 F# 中匹配字符串数组中的子字符串

c# - 您可以在一个项目中混合使用 .net 语言吗?

f# - 如何解决 F# 类型引用错误?

f# - 对于 F# 类型提供程序,如何为依赖程序集执行绑定(bind)重定向?