EF5 Code First Migration проблемы с публикацией в IIS

Я создал проект MVC 4, который использует EF5 Code First с миграциями. Поскольку я был новичком в этой теме, я использовал следующую статью.

Теперь, когда разработка завершена, я хочу опубликовать ее в IIS (я использую FTP или пакет веб-развертывания). Поэтому перед публикацией я изменил строку подключения на правильный сервер базы данных. Но после публикации сайта я получаю исключение при доступе к страницам, использующим БД. Исключения относятся к тому факту, что он не может подключиться к базе данных.

Из-за этих проблем я решил попробовать это локально на другом сервере БД, а не на сервере по умолчанию "(LocalDB)\v11.0". Кстати: "(LocalDB)\v11.0" работает как шарм... Во время отладки я лучше рассмотрел ошибку. Вот изображение ошибки: Изображение ошибки

Что я уже пробовал:

  • Создайте сценарий sql, выполнив «Update-Database -Script -SourceMigration:$InitialDatabase» в консоли диспетчера пакетов. После того, как я запустил этот скрипт на dbserver, чтобы создать файл db. Таблицы были созданы, но ошибка осталась.
  • Я изменил свою строку подключения на все виды комбинаций без каких-либо результатов
  • Я уже использовал пользовательского пользователя для пула приложений в ISS и дал этому пользователю полные права на сервер БД и базу данных.

Вот самая важная часть моего web.config:

<connectionStrings>
   <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=LOCALHOST\MSSQLSERVER;Initial Catalog=ProjectX;Integrated Security=TRUE;MultipleActiveResultSets=True" />
</connectionStrings>

А также

<entityFramework>
 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
   <parameters>
     <parameter value="Data Source=LOCALHOST\MSSQLSERVER; Integrated Security=True; MultipleActiveResultSets=True" />
   </parameters>
 </defaultConnectionFactory>
</entityFramework>

Мой конструктор класса DBCcontext выглядит так

public DBContext(): base("DefaultConnection")
{
}

Думаю, я что-то упускаю, это первый раз, когда я использую EF Code First с миграциями. Эта проблема действительно сводит меня с ума. У меня нет идей.


comment
каковы внутренние исключения?   -  person Moho    schedule 02.04.2013
comment
Я не могу получить доступ к проекту прямо сейчас. Я наклею их позже сегодня. Но сначала было что-то о ProviderManifestToken для EF Code...   -  person Beejee    schedule 02.04.2013


Ответы (1)


Только что узнал, что проблема была вызвана строкой подключения. Строка была неправильной, похоже, что если у вас есть SQL Server по умолчанию, вам просто нужно использовать «Источник данных = LOCALHOST».

Думаю, из-за всех проблем, которые у меня были в тот день с развертыванием, я упустил из виду простые части. Юст убедитесь, что следующие вещи верны, когда у вас есть проблемы, как у меня:

  1. Ваша строка подключения имеет то же имя, что и ваш DBContext. Другое решение может состоять в том, чтобы сделать то, что я сделал, и добавить имя строки подключения в базу:

    общедоступный DBContext(): base("DefaultConnection") { }

  2. Если у вас также установлен defaultconnectionfactory. Не забудьте также обновить там источник данных. Это была одна из проблем, с которыми я боролся. Я не проверял нижнюю часть моего web.config ...

Если проблема не устранена, вы можете использовать профилировщик EF, чтобы посмотреть строку подключения, когда ваше приложение сайта обращается к БД.

person Beejee    schedule 03.04.2013