Ошибка установки 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, и поместите ее в конфигурацию вашего запускаемого проекта. Получил удовольствие для меня.