McM*_*ons 6 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()
Run Code Online (Sandbox Code Playgroud)
所以它非常标准,或多或少直接添加新的LINQ to SQL类型提供程序项菜单.
我在连接字符串上找到的工具提示是"Provider'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,实体框架,基于此处的演练,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)
Run Code Online (Sandbox Code Playgroud)
添加了对以下内容的引用:FSharp.Data.TypeProviders,System.Data.Entity,System.Data.Linq