在我的某个项目上启用迁移时,我遇到了问题。
我从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
答案 0 :(得分:55)
发现问题!
问题是我的解决方案中的启动项目是一个建模项目。
出于某种原因,在我的项目上启用迁移时,该模块会查看与启动项目相关的库。
将我的启动项目更改为解决方案中的测试项目,一切正常。
<强>更新强>
确保您的启动项目包含要用于连接数据库的app.config
或web.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配置信息,并将其放入启动项目的配置中。为我做了一个款待。