2015-05-03 2 views
4

Я использую локальный файл базы данных SQL Server CE (.sdf) и Entity Framework для своей задачи.Как подключиться к локальному файлу базы данных .sdf в C#

Я создал свои модели, и теперь структура сущности должна сопоставить их с локальной базой данных.

У меня есть этот код в моем Main метод, который вставляет некоторые данные в базу данных (для проверки):

var db = new Context() 
var blog = new Blog { Name = 'FirstBlog'}; 
      db.Blogs.Add(blog); 
      db.SaveChanges(); 

и это моя строка соединения:

<connectionStrings> 
    <add name="Connection" 
     connectionString="Data source=|DataDirectory|\LocalDB.sdf&quot;" 
     providerName="System.Data.EntityClient" /> 
</connectionStrings> 

, когда я запускаю это, я получите эту ошибку:

Format of the initialization string does not conform to specification starting at index 0.

Я пробовал несколько строк подключения, но никто не работал.

Как это исправить?

UPDATE:

Как предположил я изменил строку подключения, чтобы быть:

<connectionStrings> 
    <add name="Connection" 
     connectionString="provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data source=|DataDirectory|\LocalDB.sdf&quot;" 
     providerName="System.Data.EntityClient" /> 
</connectionStrings> 

, но это дает мне следующую ошибку:

Some required information is missing from the connection string. The 'metadata' keyword is always required.

ответ

3

Первых Установите этот пакет EntityFramework.SqlServerCompact NuGet, а затем установить строку подключения к somting так:

<connectionStrings> 
    <add name="connection" connectionString="Data Source=|DataDirectory|\TestDb.sdf" 
     providerName="System.Data.SqlServerCe.4.0" /> 
    </connectionStrings> 

** Примечание: ** по умолчанию структура объекта будет создавать TestDb.sdf, если он не exsist ввы решений \bin\Debug каталог и после развертывания будет в C:\Users\YourUserName\AppData\Roaming этот каталог

+0

спасибо за ответ, но это не дает мне 'Нет Entity Framework провайдера, найденного для провайдера ADO.NET с инвариантным именем «System.Data.SqlServerCe.4.0». 'error – Jorj

+0

вы также должны установить EntityFramework .... просто установите его, а затем выполните шаги, которые я предоставил, и он должен работать. – Aminul

+0

Я думаю, что он работает, но я не могу найти файл .sdf в любом месте :(Где этот' DataDirectory'? point? – Jorj

0

Вы пропускаете Server=(localdb)\v11.0 в вашем чтобы указать, что это соединение LocalDB. В дополнение к этому у вас также есть &quot в строке подключения, которую необходимо удалить.

Подробную информацию о том, как должна выглядеть ваша строка подключения, можно найти на этой странице MSDN.

Примеры соединений строк можно найти here (Прокрутите вниз до

+0

Это говорит 'Ключевое слово не поддерживается:«server'.' :( – Jorj

0

Я думаю, что это компактный файл Sql Server, так что ваш провайдер должен быть один из поставщиков System.Data.SqlServerCe.

0
<connectionStrings> 
    <add name="MyCS" connectionString="Data Source=|DataDirectory|\Database1.sdf" 
     providerName="System.Data.SqlServerCe.4.0" /> 
    </connectionStrings> 
Смежные вопросы