2012-03-09 86 views
4

我在Win 8 CP的VS 11 Beta中玩弄了新的F#类型提供程序,我无法说服SqlDataConenction类型提供程序使用SqlCe数据库。代码:F#SqlDataConnection类型提供程序不与Sql Server Ce一起工作

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

type dbSchema = SqlDataConnection<"Data Source=C:\Test\Test.sdf"> 

数据库存在和使用VS11对话框服务器资源管理器创建/数据连接/添加新连接/的SQL Server CE /创建。不管我怎么努力,我总是得到以下错误:

The type provider 'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders' reported an error: Error reading schema. Error : Cannot open 'C:\Test\Test.sdf'. Provider 'System.Data.SqlServerCe.3.5' not installed.

我试过到目前为止:

  • 安装的SQL Server CE 3.5,但错误还是一样。
  • 改性连接字符串&加入匹配引用到项目:
    • “提供者= System.Data.SqlServerCe.3.5;数据源= C:\测试\ Test.sdf”
    • “提供者=系统.Data.SqlServerCe.4.0;数据源= C:\测试\ Test.sdf”
+2

如果您尝试使用“数据源= C:\\ Test \\ Test.sdf”,它有什么不同吗? – ildjarn 2012-03-09 20:55:32

+0

根据MSDN上的这个例子(http://msdn.microsoft.com/en-us/library/hh361033(v=vs.110).aspx#BKMK_SetUpTypeProv),转义似乎是正确的,它们也不能逃避反斜杠 – m0sa 2012-03-10 00:00:51

+0

在F#中,如果非转义版本意味着某些东西,则只需要转义反斜杠即可。示例中的“\ I”并不代表任何内容,但代码中的“\ t”表示Tab。但是,我不认为提供商与CE一起工作 - 我上次尝试时无法使其工作。 – 2012-03-10 11:36:22

回答

1

我知道这个问题几年前有人问,但对于未来的参考:

[<Literal>] 
let connection_string [email protected]"Data Source=C:\Test\Test.sdf" 

type dbSchema = SqlDataConnection<connection_string> 
相关问题