ASP.NET MVC - переход с SQL Server Express на Compact Edition - проблема с подключением

У меня есть проект ASP.NET MVC 4 - CodeFirst с Entity Framework, который был подключен к базе данных SQL Server Express, созданной EF, и работал нормально.

Однако я пытаюсь выполнить развертывание в AppHarbor и имею некоторые проблемы с версией SQL, работающей там, при подключении к моему приложению.

Итак, я заметил, что у них есть пример проекта, в котором используется SQL Server Compact Edition 4. Вот файл web.config для этого проекта: https://github.com/friism/CodeFirstMigrations/blob/master/Web/Web.config

Кроме того, я нашел руководство о том, как включить базу данных SQL Server CE в ваш проект на сайте Microsoft ASP.NET: http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-4

Я решил создать FranchiseManagerData.sdf файл в папке App_Data и изменить строку подключения и настройки приложения, чтобы они соответствовали их. Вот как выглядит мой Web.config:

<appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

  <connectionStrings>
    <add name="FranchiseManagerEntities"
         connectionString="Data Source=|DataDirectory|FranchiseManagerData.sdf"
         providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>

Когда я запускаю свое приложение, я получаю сообщение об ошибке DataException: The underlying provider failed on Open.

Похоже, что происходит то, что приложение все еще ищет старую базу данных, созданную Entity Framework с именем: FranchiseManagerTest.Models.FranchiseManagerContext - EF назвал ее после моего класса контекста данных.

Вот ошибка, которая отображается после остановки отладки:

 Cannot open database "FranchiseManagerTest.Models.FranchiseManagerContext" requested by the login. The login failed.
Login failed for user 'COMPANY\UserName'.

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

Что я делаю неправильно? Как я могу заставить мой проект искать созданную мной локальную базу данных SQL Server CE, а не предыдущую базу данных?

Если мне нужно предоставить какие-либо дополнительные сведения, пожалуйста, дайте мне знать.

Заранее благодарим.


РЕДАКТИРОВАТЬ

Вот часть раздела System.Web моего файла Web.config:

<compilation debug="true" targetFramework="4.0" />
<customErrors mode="Off"></customErrors>
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>

person PhillipKregg    schedule 10.07.2012    source источник
comment
Вы используете FormsAuthentication?   -  person Erik Philips    schedule 11.07.2012
comment
Привет, Эрик! Я обновил свой OP, чтобы показать режим аутентификации. Да, он использует проверку подлинности форм по умолчанию с методом входа в систему контроллера учетной записи.   -  person PhillipKregg    schedule 11.07.2012
comment
... хотя в контроллерах еще не настроена авторизация - пока что это всего лишь одна строчка в Web.config.   -  person PhillipKregg    schedule 11.07.2012


Ответы (1)


FormsAuthentication по умолчанию не имеет возможности использовать Sql CE (насколько мне известно).
Я использовал EJ's SQL Server Compact 4.0 ASP.NET Membership provider без каких-либо проблем.

Кроме того, похоже, что вам придется обновить соединение Entity Framework, чтобы правильно использовать базу данных SQL Server CE.

Обновить

Начиная с .Net 4.5, новые поставщики SimpleMemembership и Univerasl наивно поддерживают Sql CE.

person Erik Philips    schedule 10.07.2012
comment
Хорошо, спасибо, я не знал о несовместимости между ними. - person PhillipKregg; 11.07.2012