我刚刚为迁移良好安装了EF 4.3-beta1,但我无法使其正常运行。我得到的错误:
PM> Update-Database -Verbose
Using NuGet project 'Project.Domain'.
Using StartUp project 'ProjectWebSite'.
System.InvalidOperationException: No migrations configuration type was found in the assembly 'Project.Domain'.
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.FindConfiguration()
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.GetMigrator()
at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
No migrations configuration type was found in the assembly 'Project.Domain'.
我在2个EF类中添加了一个新列:
public class MasterInstance
{
public int MasterInstanceId { get; set; }
[Required] public string HostName { get; set; }
[Required] public string Name { get; set; } /* <-- THIS IS NEW */
[Required] public string ConnectionString { get; set; }
public virtual ICollection<MasterInstanceLocation> MasterInstanceLocations { get; set; }
}
我的DbContext看起来像这样:
public class ProjectDontext: DbContext, IProjectContext
{
public IDbSet<Installer> Installers { get; set; }
public IDbSet<MasterInstance> MasterInstances { get; set; }
public IDbSet<MasterInstanceLocation> MasterInstanceLocations { get; set; }
}
有什么想法吗?我的EF课程和上下文位于单独的程序集(Project.Domain)中。我已经尝试在主网站和域项目的上下文中运行更新数据库,并且无论如何都会出现相同的错误。
- 编辑 -
找到解决方案。事实证明,您需要为项目启用迁移。您可以通过在NuGet控制台中运行Enable-Migrations
来执行此操作(确保选择了正确的项目 - 对我来说这是project.domain项目)。
This walkthrough提供了更多信息
答案 0 :(得分:18)
找到解决方案。事实证明,您需要为项目启用迁移。您可以通过在NuGet控制台中运行Enable-Migrations
来执行此操作(确保选择了正确的项目 - 对我来说这是project.domain项目)。
This walkthrough提供了更多信息
答案 1 :(得分:6)
有时,即使您启用了迁移,也可能会出现此问题。这意味着配置文件已被删除。在这种情况下,您可以运行
Enable-Migrations -Force
包管理器控制台中的。 -Force
参数用于覆盖迁移配置文件。
答案 2 :(得分:1)
如果您已经启用了迁移并且在某些Windows更新后刚刚开始看到此错误,请确保您使用NuGet包管理器在所有项目中使用相同版本的Entity Framework。
最近的Windows更新可能已在您的活动项目中安装了较新版本的Entity Framework。
背景:2016年3月16日左右,我开始获得&#34; no迁移配置类型&#34;尝试将迁移添加到我已启用迁移且之前已成功完成迁移的项目时出错。
我注意到在3月10日左右,一个新的稳定版Entity Framework 6已经发布。
如果我在enable-migrations命令中指定了-ContextTypeName参数,则会收到一条错误消息,表明迁移已经启用。
我在排除故障时遇到的另一个错误表明配置类型不是从System.Data.Entity.ModelConfiguration.EntityTypeConfiguration继承的,即使它是。
这让我相信实体框架的不同版本存在冲突。
分辨率:
1)工具 - &gt; Nuget包管理器 - &gt;管理解决方案的Nuget包
2)(不确定这一步是否必要,但是..)我将我的Nuget Package Manager版本更新到最新版本。此外,在更新我的Nuget Package Manager版本后,我必须重新启动Visual Studio两次才能使NuGet命令行正常工作。
3)工具 - &gt; Nuget包管理器 - &gt;管理解决方案的Nuget包 - &gt;搜索已安装的软件包 - &gt;类型实体框架
一个。您可能会在那里看到多个版本的Entity Framework。
湾单击每个版本的Entity Framework上的Manage,确保您的项目使用的是Entity Framework的SAME版本。 •取消选中您未使用的实体框架版本以及您正在使用的实体框架版本,确保在需要它的项目中检查它。
同样,如第2步所述,我必须重新启动visual studio两次,以便在更新我的NuGet软件包管理器版本后让NuGet软件包管理器控制台正常工作。我第一次启动控制台时遇到错误,并且&#34;异常调用带有8个参数的createinstancefrom无法加载文件或程序集EntityFramework&#34;第二次运行enable-migrations命令时。
然而,重新启动visual studio似乎解决了这些问题。
答案 3 :(得分:0)
对我来说,发生此错误是因为我在VS2019的程序包管理器控制台的“默认项目”中选择了错误的项目。
答案 4 :(得分:0)
即使启用了迁移,如果在 Package Manager控制台的下拉菜单中选择了错误的默认项目,也会发生上述行为。一种非图形的方法是展开您正在使用的命令,并使用参数-ProjectName
Update-Database -Verbose -ProjectName TheCorrectProjectName
您可能仍会收到类似的警告
无法确定有效的启动项目。而是使用项目“ TheCorrectProjectName”。您的配置文件和工作目录可能未按预期设置。使用-StartUpProjectName参数来显式设置一个。
不过,这个额外的命令行参数为我解决了这个问题。