Как подключиться к SQL Server Compact Edition 4.0 с помощью поставщика типов на F #?

Я пытаюсь подключиться к базе данных SQL Server Compact Edition из F # и пытаюсь использовать поставщик типов. Это в бета-версии Visual Studio 11, поэтому я понимаю, что из-за этого может возникнуть проблема, но я думаю, что более вероятно, что у меня просто еще нет ноу-хау.

Однако я заметил, что в 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 с типом поставщика.

Всплывающая подсказка, которую я получаю над строкой подключения, - «Provider 'System.Data.SqlServerCe.3.5' not installed». Это указывает на то, что проблема заключается в том, что Sql Server CE не установлен, но у меня есть библиотеки, я могу подключиться к базе данных с помощью обычного SqlCEConnection и запустить SqlCeCommands и тому подобное. А так как это 4.0, а не 3.5, я не уверен, что он ищет не того провайдера. Я создал базу данных прямо в бета-версии VS 11, поэтому я полагал, что все версии должны совпадать и все такое.

Короче говоря, мне интересно, делаю ли я что-то не так, или библиотеки поставщиков бета-типов VS11 еще не поддерживают CE 4.0, или есть что-то еще, что мне нужно сделать, чтобы это произошло.

Спасибо!


person McMuttons    schedule 14.04.2012    source источник


Ответы (2)


Это «Работает на моем компьютере» (с использованием 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, System.Data.Entity, System.Data.Linq.

person ErikEJ    schedule 03.05.2012
comment
До сегодняшнего дня не было возможности протестировать. Это было огромным подспорьем, так что спасибо! Я также обнаружил, что, по крайней мере, для простого примера здесь нет необходимости включать System.Data.EntityClient. Более компактный синтаксис запроса также заключался в использовании контекста. Поставщики | ›Seq.iter ... и т. Д. - person McMuttons; 09.05.2012

person    schedule
comment
Полагаю, это означает, что функциональность есть, но настройка подключения для передачи данных еще не установлена? Я совершенно новичок в поставщиках типов и довольно новичок в LINQ to SQL (в целом имею опыт работы с LINQ). - person McMuttons; 18.04.2012