2012-04-14 1 views
6

F #에서 SQL Server Compact Edition 데이터베이스에 연결하려고 시도하고 형식 공급자를 사용하려고했습니다. 이것은 Visual Studio 11 베타 버전이므로 문제가 될 수 있다는 것을 알고 있습니다. 그러나 아직 노하우가없는 것 같아요.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() 

그래서 꽤 표준, 더 많거나 적은 똑바로의의 유형 바이더 아이템 메뉴와 SQL 새로운 LINQ를 추가합니다.

"연결 'System.Data.SqlServerCe.3.5'가 설치되지 않았습니다."라는 연결 설명이 표시됩니다. 찾는 것은 Sql Server CE가 설치되지 않은 문제입니다. 그러나 라이브러리를 가지고 있으며, 정규 SqlCEConnection을 사용하여 데이터베이스에 연결할 수 있고 SqlCeCommands 등을 실행할 수 있습니다. 4.0 이후 3.5가 아니기 때문에 잘못된 공급자를 찾고 있는지 확실하지 않습니다. VS 11 베타 버전에서 데이터베이스를 만들었으므로 모든 버전이 일치해야한다고 생각했습니다.

즉, 뭔가 잘못하고 있는지, 또는 VS11 베타 유형 공급자 라이브러리가 CE 4.0을 아직 지원하지 않는지 궁금하거나, 그렇지 않으면 내가해야 할 일이 있다면 .

감사합니다.

답변

5

이 "작품은 내 컴퓨터에서"(http://msdn.microsoft.com/en-us/library/hh361038(v=vs.110).aspx 여기에 연습을 기반으로, VS 11 베타, 엔티티 프레임 워크를 사용하여 :

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를 포함 할 필요가 없다는 사실을 발견했습니다. 보다 간단한 쿼리 구문은 또한 컨텍스트를 수행하는 것이 었습니다. 공급 업체 |> Seq.iter ... 등 – McMuttons

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와 ienced). – McMuttons