启用迁移安装错误



在我的一个项目上启用迁移时遇到了一个问题。我从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:SolutionpackagesEntityFramework.5.0.0toolsEntityFramework.psm1:391 char:5
+     $domain.SetData('startUpProject', $startUpProject)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SerializationException

在此之前,有没有人能为我指明正确的方向。

环境:
.NET 4.5
实体框架5
Visual Studio 2012更新2

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

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

更新

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

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

(如果您在Visual Studio中使用代码优先迁移,如果解决方案的启动项目没有引用包含迁移的项目,则可能会发生这种情况。您可以更改解决方案的startUp项目,也可以使用-StartUpProjectName参数。)

为了防止其他人仍然有问题,我遇到了这个问题,因为我安装了Entity Framework 6和Entity Framework Core。我相信,仅仅运行命令就默认为EF6。在我用"EntityFrameworkCore/"作为命令的前缀后,它工作得很好。我不是这方面的专家,所以如果这是不正确的,我道歉。(例如"EntityFrameworkCore/")

尝试指定内容类型名称:

Enable-Migrations -ContextTypeName Web.Infrastructure.ContextName

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

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

相关内容

最新更新