WebActivator начиная с версии 1.3 поддерживает сценарии, не связанные с сетью. Вы можете выполнить действия вручную (полезно в модульных тестах).

аюсь использовать EF Code First с моим приложением WPF, идея состоит в том, чтобы создать SqlCe Db в AppData / MyApp (если его нет) и использовать его с EF Code First.

В данный момент он выдает ошибку, когда я пытаюсь прочитать данные из базы данных, которую он должен создать, но когда я проверил объект контекста db, я увидел, что он пытается создать его в SqlExpress.

Прежде всего, как я могу настроить его на работу с CE вместо SqlExpress и указать местоположение файла?

Я попытался изменить строку подключения в app.config, но не смог заставить его работать (он не создал файл sdf), а также я не уверен, как установить путь строки подключения к папке AppData, поскольку она находится в папке пользователя (не исправлено).

Никогда раньше не работал с SqlCe или EF Code First, поэтому любая помощь приветствуется и ценится.

Заранее спасибо.

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

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

p.config имеет следующее:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
  </configSections>

  <connectionStrings>
    <add name="Database"
         connectionString="Data Source=Database.sdf"
         providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>

  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0"
           invariant="System.Data.SqlServerCe.4.0"
           description=".NET Framework Data Provider for Microsoft SQL Server Compact"
           type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
  </system.data>

</configuration>

Наличие DbProviderFactory поможет и в развертывании. Это позволит пользователям использовать SQLCE 4 без запуска инсталлятора для него (при условии, что вы также предоставите родные бинарные версии, некоторую информацию здесь:http://erikej.blogspot.com/2011/02/using-sql-server-compact-40-with.html).

 Jed Schaaf06 дек. 2013 г., 19:33
Для Code First, после настройки вашей программы, чтобы она работала в вашей системе разработки, все, что действительно нужно для app.config, это добавлениеDbProviderFactories пометить записи. Code First сделает все необходимые строки подключения для вас. Вам также может потребоваться, чтобы DLL-файлы SQLCE (из папки Program Files [x86]) распространялись вместе с вашей программой.
 Tiax20 апр. 2011 г., 04:18
Я перестал гоняться за этим некоторое время назад, так что не проверял ваше решение, но, поскольку никто больше не придумал ничего, а у вас уже есть 2 голоса, я приму это. Спасибо человек, я отмечу решение где-нибудь и, возможно, буду использовать его в будущем!

вероятно, не поможет в краткосрочной перспективе, но я думаю, что это будет лучшим решением в долгосрочной перспективе. Я не смог найти, где кто-то еще задокументировал, как это сделать, так что, думаю, мне придется разобраться с этим по ходу дела, если кто-то с более глубокими знаниями об использовании SqlCE4, CodeFirst и создании пакетов NuGet не сравнится со мной . Нам нужен пакет NuGet, либо новый пакет, либо сделайте существующий достаточно умным, чтобы справиться с ним, который может добавить SqlCE4 и CodeFirst в проект WPF и / или WinForms.

Существующий пакет ориентирован на веб-проекты, поскольку он зависит от WebActivator. Из того, что я могу сказать, установка WebActivator на не-веб-проект действительно не подходит. Я не знаю, возможно ли для пакета NuGet определить тип проекта и выполнить другую логику установки на основе этой информации. Для тех, кто отвечает за поддержку пакета EFCodeFirst.SqlServerCompact, лучше всего выпустить не-веб-версию или сделать существующую более разумной.

В ожидании этого, в свободное время я посмотрю, смогу ли я понять, как это сделать и создать свой собственный. Я не могу обещать, сколько времени это займет у меня, потому что я почти полностью в неведении относительно создания пакетов NuGet. Я создал несколько действительно простых, но никогда не делал ничего более сложного, например, преобразования конфигурации и тому подобное.

 Jakub Konecki13 мар. 2011 г., 21:59
WebActivator начиная с версии 1.3 поддерживает сценарии, не связанные с сетью. Вы можете выполнить действия вручную (полезно в модульных тестах).

lServerCompact с помощью диспетчера пакетов NuGet и посмотреть по адресу: Visual Studio 2010 \ Projects \ MyProject \ packages \ EFCodeFirst.SqlServerCompact.0.8.8482 \ Content, это сделает что-то для вашего веб-приложения, например:

public static class AppStart_SQLCEEntityFramework {
    public static void Start() {
        DbDatabase.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");

        // Sets the default database initialization code for working with Sql Server Compact databases
        // Uncomment this line and replace CONTEXT_NAME with the name of your DbContext if you are 
        // using your DbContext to create and manage your database
        //DbDatabase.SetInitializer(new CreateCeDatabaseIfNotExists<CONTEXT_NAME>());
    }
}

что инструмент готов для SQLCE для проектов WPF. Это остановило меня в моих следах тоже.

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