启用 - 迁移安装错误

时间:2013-06-25 21:48:05

标签: entity-framework visual-studio-2012 entity-framework-5 ef-migrations

在我的某个项目上启用迁移时,我遇到了问题。 我从Nuget控制台执行 Enable-Migrations 命令并收到错误消息:

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
实体框架5 Visual Studio 2012 Update 2

5 个答案:

答案 0 :(得分:55)

发现问题!
问题是我的解决方案中的启动项目是一个建模项目。 出于某种原因,在我的项目上启用迁移时,该模块会查看与启动项目相关的库。

将我的启动项目更改为解决方案中的测试项目,一切正常。

<强>更新

确保您的启动项目包含要用于连接数据库的app.configweb.config文件。即使您的DbContext位于其他项目上,也会使用此文件生成迁移。您可以将包含DbContext的项目设置为启动项目。

答案 1 :(得分:3)

事实证明,当您使用代码首次迁移时,您必须在VS中指定一个启动项目,引用项目,其中迁移在其他地方定义,它将无法加载项目。

(如果在Visual Studio中使用Code First Migrations,如果解决方案的startUp项目未引用包含迁移的项目,则会发生这种情况。您可以更改解决方案的startUp项目或使用-StartUpProjectName参数。)

答案 2 :(得分:1)

为了防止其他人仍然遇到问题,我遇到了这个问题,因为我安装了Entity Framework 6和Entity Framework Core。我相信,运行命令默认为EF6。在我使用&#39; EntityFrameworkCore /&#39;开始命令后,它运行正常。我不是这方面的专家,所以如果这不正确,我道歉。 (例如,&#39; EntityFrameworkCore /&#39;)

答案 3 :(得分:0)

尝试指定内容类型名称:

Enable-Migrations -ContextTypeName Web.Infrastructure.ContextName

如果解决方案中有多个项目,则必须指定要应用的项目。 (在控制台顶部下拉“DefaultProject”)。

答案 4 :(得分:0)

我也遇到了这个问题,并意识到它无法连接,因为启动web.config没有包含EF配置细节。包含它的项目(数据层)具有所需的配置信息,但该配置未被使用。只需从正在使用EF的配置文件中移动EF配置信息,并将其放入启动项目的配置中。为我做了一个款待。