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

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

Тем не менее, я заметил, что в Microsoft.FSharp.Data.TypeProviders нет поставщика, специфичного для CE, и я не уверен, что обычное SqlDataConnection справится с этой задачей, так что это может быть проблемой прямо сейчас.

Однако когда я пытаюсь создать соединение, IDE, кажется, распознает, что я пытаюсь получить доступ к базе данных CE, по крайней мере.

Итак, у меня есть следующий код:

<code>type SqlConnection = 
  Microsoft.FSharp.Data.TypeProviders
    .SqlDataConnection<ConnectionString = @"Data Source=C:\\Path\\Database.sdf">
let db = SqlConnection.GetDataContext()
</code>

Так что это довольно стандартно, более или менее прямо из добавления нового LINQ to SQL с помощью пункта меню провайдера типов.

Подсказка, которую я получаю по строке подключения, - это «Поставщик» System.Data.SqlServerCe.3.5 ». не установлен. & quot; Похоже, что это указывает на то, что проблема в том, что не установлен Sql Server CE, но у меня есть библиотеки, я могу подключиться к базе данных, используя обычное соединение SqlCEC и подключить SqlCeCommands и тому подобное. И поскольку он 4.0, а не 3.5, я не уверен, что он ищет неправильного провайдера. Я создал базу данных прямо в бета-версии VS 11, поэтому решил, что все версии должны совпадать, и все такое.

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

Спасибо!

Ответы на вопрос(2)

Решение Вопроса

Работает на моей машине & quot; (используя бета-версию VS 11, 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

 McMuttons09 мая 2012 г., 15:04
До сегодняшнего дня не было возможности провериться. Это была огромная помощь, так что спасибо! Я также обнаружил, что по крайней мере для простого примера здесь не было необходимости включать System.Data.EntityClient. Более компактный синтаксис запроса также должен был просто выполнять context.Suppliers | & gt; Seq.iter ... и т. Д.
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
 McMuttons18 апр. 2012 г., 15:04
Таким образом, я предполагаю, что это означает, что есть множество функциональных возможностей, но настройка соединения для передачи данных еще не? Я совершенно не знаком с поставщиками типов и довольно плохо знаком с LINQ to SQL (опыт работы с LINQ в целом).

Ваш ответ на вопрос