17

在我的一个项目上启用迁移时遇到了问题。我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 Update 2

4

5 回答 5

55

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

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

更新

确保您的启动项目包含要用于连接数据库的app.config或文件。web.config即使您DbContext位于不同的项目中,该文件也将用于生成迁移。您可以将包含您的项目设置DbContext为启动项目。

于 2013-06-28T14:11:38.760 回答
3

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

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

于 2013-08-13T20:26:38.177 回答
1

万一其他人仍然有问题,我遇到了这个问题,因为我同时安装了 Entity Framework 6 和 Entity Framework Core。我相信,仅运行命令默认为 EF6。在我使用“EntityFrameworkCore/”作为命令的开头之后,它运行良好。我不是这方面的专家,所以如果这不正确,我很抱歉。(例如'EntityFrameworkCore/')

于 2018-06-06T12:46:13.200 回答
0

尝试指定内容类型名称:

Enable-Migrations -ContextTypeName Web.Infrastructure.ContextName

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

于 2013-06-26T10:23:14.063 回答
0

我也遇到了这个问题,并意识到它无法连接,因为启动 web.config 不包含 EF 配置详细信息。包含它的项目(数据层)具有所需的配置信息,但未使用该配置。只需从使用 EF 的配置文件中移动 EF 配置信息,并将其放入启动项目的配置中。对我来说是一种享受。

于 2017-09-22T20:39:49.483 回答