2012-04-14 67 views
6

我正試圖從F#連接到SQL Server Compact Edition數據庫,並嘗試使用類型提供程序。這是在Visual Studio 11 Beta中,所以我意識到可能會有一個問題,因爲這一點,但我認爲我更可能還沒有專有技術。如何使用F#中的類型提供程序連接到SQL Server Compact Edition 4.0?

但是,我注意到在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型供應商項目菜單中的SQL。

我通過連接字符串獲得的工具提示是「Provider'System.Data.SqlServerCe.3.5'not installed。」看起來似乎表明這是沒有安裝Sql Server CE的問題,但是我有了庫,能夠使用常規的SqlCEConnection連接到數據庫並運行SqlCeCommands等。由於它是4.0而不是3.5,我不確定它是否在尋找錯誤的提供者。我在VS 11測試版中創建了數據庫,所以我認爲所有版本都應該匹配。

所以簡而言之,我想知道如果我做錯了什麼,或者如果VS11 beta類型提供程序庫還不支持CE 4.0,或者如果還有其他事情需要我去做。

謝謝!

回答

5

這 「作品在我的機器」(使用VS 11測試版,實體框架的基礎上,這裏的演練,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, System.Data.Entity, System.Data.Linq

+0

直到今天還沒有機會測試。這是一個巨大的幫助,所以謝謝!我還發現,至少在這裏的簡單例子中,沒有必要包含System.Data.EntityClient。一個更緊湊的查詢語法也只是做context.Suppliers |> Seq.iter ...等 – McMuttons 2012-05-09 13:04:58

2
Supported info of 'System.Data.SqlServerCe.4.0' in Microsoft.FSharp.Data.TypeProviders 
1.SqlDataConnection is not 
2.DbmlFile is partial 
    type dbml = DbmlFile<_> 
    use cn = new SqlCeConnection(...) 
    use db = new dbml.DbContext(cn) 
3.EdmxFile is full 
4.SqlEntityConnection is full 
+0

所以我想這意味着一堆功能在那裏,但建立一個數據連接還沒有?我是完全陌生的鍵入提供商,並公平LINQ to SQL(exper一般情況下,使用LINQ)。 – McMuttons 2012-04-18 13:04:17

相關問題