Подтвердить что ты не робот

Entity Framework 4 и SQL Compact 4: Как создать базу данных?

Я разрабатываю приложение с Entity Framework 4 и SQL Compact 4, используя подход Model First. Я создал свой EDM, и теперь я хочу создать базу данных SQL Compact 4.0 для работы в качестве хранилища данных для модели. Я открываю мастер создания базы данных и нажимаю кнопку "Новое соединение", чтобы создать соединение для сгенерированного файла. Откроется диалоговое окно "Выбор источника данных", но SQL Compact 4.0 не указан в списке доступных источников данных:

enter image description here

Я запускаю VS 2010 SP1 (бета), и я установил VS 2010 Tools для SQL Compact 4.0. Я могу создать соединение данных SQL Compact 4.0 от Server Explorer. Только в Мастере создания базы данных параметр 4.0 не появляется. BTW, моя установка SQL Compact 4.0 включает System.Data.SqlServerCe.Entity.dll. Поэтому мне нужны компоненты SQL Compact.

Я делаю что-то неправильно, или это ошибка? У кого-нибудь есть исправление или обходное решение? Спасибо за вашу помощь.

4b9b3361

Ответ 1

В качестве обходного пути я использую Мастер создания базы данных для создания SQL Compact 3.5 script, который я запускаю против пустой базы данных SQL Compact 4.0, созданной в обозревателе решений VS 2010. Вот шаги для выполнения этой задачи:

Шаг 1: Запустите мастер создания базы данных. Он запрашивает создание файла на своей первой странице, поэтому создайте файл SQL Compact 3.5. Этот файл является манекеном, поэтому не имеет значения, как вы его называете.

Шаг 2: Завершите работу мастера, чтобы создать DDL script, который будет настраивать новую базу данных.

Шаг 3: Удалите фиктивный файл, созданный на шаге 1.

Шаг 4: Используйте VS Server Server Explorer для создания фактического файла SQL Compact 4.0, который вы будете использовать в своем проекте.

Шаг 5: Мастер создания базы данных размещает две ссылки на SQL Compact "3.5" в файле EDMX; эти ссылки необходимо изменить на "4.0". Откройте файл EDMX в редакторе XML VS 2010 (щелкните правой кнопкой мыши и выберите "Открыть с", чтобы перейти к редактору XML). Строка 7 должна содержать ссылки "3.5". Измените их на "4.0" и сохраните файл.

Шаг 6: Откройте сгенерированный файл EDMX.SQLCE script в VS 2010. VS укажет (через баннер через botton рабочей области), что script отключен. Щелкните правой кнопкой мыши над белым пространством над баннером и выберите "Соединение" > "Подключиться" в появившемся контекстном меню. Это вызывает диалог подключения - используйте его для подключения script к базе данных SQL Compact 4.0, созданной на шаге 4.

Шаг 7: Щелкните правой кнопкой мыши в свободном пространстве script и выберите "Выполнить SQL" в контекстном меню. Выполняется script, и вы получите обычное сообщение результатов на панели ниже script. Предполагая успешное выполнение, база данных затем настроена на соответствие модели данных сущности.

Шаг 8: Нам также необходимо убедиться, что App.config/web.config не указывает на фиктивный файл. Если это изменить его на фактический файл CE 4.0, созданный на шаге 4 выше. Иначе у нас возникают проблемы с регенерацией script, когда мы вносим изменения в модель. В конфигурационном файле также измените значение от 3.5 до 4.0.

В этот момент вы сможете использовать Entity Framework 4 для работы с вашей базой данных.

Ответ 2

Чтобы ответить на приведенные ниже комментарии и обратиться к ним в соответствии с: http://blogs.msdn.com/b/sqlservercompact/archive/2011/01/12/microsoft-sql-server-compact-4-0-is-available-for-download.aspx

Эти мастера не работают.

Дизайнеры проектов VB или С# Windows в Visual Studio 2010 SP1: следующие мастера не работают с Compact 4.0 в системе Windows. Разработчики могут вручную добавить ссылку на поставщика ADO.NET для Compact 4.0 (System.Data.SqlServerCe) для разработки программ для Compact 4.0 в проектах Windows:

  • Мастер настройки источника данных, который используется для настройки наборов данных.
  • Мастер настройки конфигурации данных, который используется для настройки синхронизации данных и схемы с помощью SQL Server с помощью Sync FX.
  • Мастер модели данных сущности, который используется для генерации объектов из базы данных Compact.

Ниже приведены принятые решения для этих проблем. http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html

Ответ 3

Как я понимаю, текущая версия VS 2010 не поддерживает SQL CE 4.0. Он должен быть включен в VS 2010 SP1 (в настоящее время в бета-версии). Проверьте этот пост в блоге, который также описывает использование модели EF с SQL CE 4.0 в пакете обновления 1.

Edit:

Я нашел это обходное решение.

Ответ 4

Вы можете использовать IDatabaseInitializer и создать базу данных в коде с помощью

if (File.Exists("Test.sdf"))
    File.Delete("Test.sdf");

string connStr = "Data Source = Test.sdf; Password = <password>";

SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();

SqlCeConnection conn = null;

try {
    conn = new SqlCeConnection(connStr);
    conn.Open();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "CREATE TABLE myTable (col1 int, col2 ntext)";
    cmd.ExecuteNonQuery();

catch {
finally {
    conn.Close();

http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceengine(v=vs.80).aspx

Ответ 5

Еще один, используйте инструмент базы данных WebMatrix.

Microsoft WebMatrix

Ответ 6

Я могу запустить Generate Database Wizard без каких-либо проблем из моего проекта Chinook.Data, убедитесь, что у вас есть правильная строка подключения в app.config. http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="ChinookEntities" connectionString="metadata=res://*/ChinookModel.csdl|res://*/ChinookModel.ssdl|res://*/ChinookModel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data Source=C:\projects\Chinook\Chinook40.sdf&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

Ответ 7

Возможно, необходимо установить инструменты SQL Server Compact 4, если он не устанавливался напрямую при установке Visual Studio 2010 SP1, вы можете установите его. Это то, что сработало для меня, когда у меня возникла проблема.