Ошибка установки Enable-Migrations

Я столкнулся с проблемой при включении миграции на одном из моих проектов. Я исполняю Enable-Migrations введите команду из консоли Nuget и получите сообщение об ошибке:

Exception calling "SetData" with "2" argument(s): "Type 
'Microsoft.VisualStudio.TeamArchitect.ModelingProject.ModelProjectAutomationObject' in assembly 
'Microsoft.VisualStudio.TeamArchitect.ModelingProject, Version=11.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable."
At D:\Solution\packages\EntityFramework.5.0.0\tools\EntityFramework.psm1:391 char:5
+     $domain.SetData('startUpProject', $startUpProject)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SerializationException

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

Среда:
.NET 4.5
Entity Framework 5
Visual Studio 2012, обновление 2

5 ответов

Решение

Нашел проблему!
Проблема состояла в том, что проект запуска в моем решении был проектом моделирования. По какой-то причине при включении миграций в моем проекте модуль просматривает библиотеки, связанные с запуском проекта.

Мой стартовый проект изменился на тестовый проект в решении, и все заработало.

ОБНОВИТЬ

Убедитесь, что ваш стартовый проект содержит app.config или же web.config файл, который вы хотите использовать для подключения к базе данных. Это файл, который будет использоваться для генерации миграций, даже если ваш DbContext находится в другом проекте. Вы можете установить проект, содержащий ваши DbContext в качестве запуска проекта.

Оказывается, когда вы используете код первой миграции, вы должны указать стартовый проект в VS, ссылаясь на проект, где ваши миграции определены в другом месте, где он не сможет загрузить проект.

(Если вы используете Code First Migrations в Visual Studio, это может произойти, если проект startUp для вашего решения не ссылается на проект, содержащий ваши миграции. Вы можете либо изменить проект startUp для своего решения, либо использовать параметр -StartUpProjectName.)

На случай, если у других все еще есть проблемы, у меня была эта проблема, потому что у меня были установлены и Entity Framework 6, и Entity Framework Core. Я полагаю, что при запуске команд по умолчанию используется EF6. После того, как я предвосхитил команды с помощью EntityFrameworkCore/, все заработало нормально. Я не эксперт по этому вопросу, так что, если это не так, прошу прощения. (Например, EntityFrameworkCore/)

Попробуйте указать название типа контента:

Enable-Migrations -ContextTypeName Web.Infrastructure.ContextName

Если у вас есть несколько проектов в решении, вы должны указать, какой из них применить. (выпадающий "DefaultProject" в верхней части консоли).

У меня тоже была эта проблема, и я понял, что она не может подключиться, потому что при запуске web.config не было сведений о конфигурации EF. Проект, который действительно содержал его (уровень данных), имеет необходимую информацию о конфигурации, но эта конфигурация не используется. Просто переместите конфигурационную информацию EF из файла конфигурации, где используется EF, и поместите ее в конфигурацию вашего запускаемого проекта. Получил удовольствие для меня.

Другие вопросы по тегам