2012-01-30 180 views
11

我刚刚安装EF 4.3-beta1的迁移善良,我不能得到它的工作。错误我得到:实体框架4.3迁移错误

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提供了更多的信息,发现

+1

您的问题是Google的最佳搜索结果*在程序集*中未找到迁移配置类型。这是测试版软件还是非常新的。我会尽量在MSDN论坛上发布。 – Yuck 2012-01-30 13:09:08

+0

Good call - http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/39edecbf-267d-4e88-bad9-87c60f330d8a – 2012-01-30 13:26:11

+0

你有Project.Domain下的迁移文件夹吗 – 2012-01-30 14:17:02

回答

14

解决方案。事实证明,您需要为您的项目启用迁移。你可以通过在NuGet控制台中运行Enable-Migrations来做到这一点(确保你选择了正确的项目 - 对我来说这是project.domain项目)。

This walkthrough提供更多信息

+2

>确保您选择了正确的项目 这是我的问题。确保选择了正确的项目。 – 2015-10-13 13:33:06

4

有时,即使你已启用迁移,可能会出现这个问题。这意味着配置文件已被删除。在这种情况下,您可以在PM控制台中运行enable-migrations-Force。强制参数是覆盖迁移配置文件。

1

如果已经启用迁移和刚开始后,一些Windows更新出现这个错误,请确保您正在使用多个使用NuGet包管理器中的所有项目实体框架的版本相同。

最新的Windows更新可能已经安装了实体框架的更新版本到您的活动项目。

背景:大约2016年3月16日,我开始尝试迁移添加到我已经启用迁移之前已经成功地完成迁移项目时得到了“没有迁移配置类型”的错误。

我注意到周围3月10日,实体框架6的一个新的稳定版本已被释放。

如果我指定的允许的迁移命令-ContextTypeName参数,我得到指示迁移错误已经启用。

我在解决问题时遇到的另一个错误表明配置类型不是从System.Data.Entity.ModelConfiguration.EntityTypeConfiguration继承,即使它是。

这使我相信不同版本的实体框架是相互矛盾的。

分辨率:

1)工具 - > NuGet包管理器 - >管理的NuGet包解决方案

2)(不知道这一步是必要的,但..)我更新版本的Nuget Package Manager到最新版本。另外,在更新我的Nuget Package Manager版本之后,我必须在NuGet Command线路正常工作之前重新启动Visual Studio两次。

3)工具 - > NuGet包管理器 - >管理的NuGet包解决方案 - >搜索已安装包 - >键入实体框架

一个。您可能会在其中看到多个版本的实体框架。

b。在每个实体框架版本上单击管理,并确保您的项目使用的是实体框架的相同版本。 •取消选中您未使用的实体框架版本,以及您正在使用的实体框架版本,确保在需要它的项目中对其进行检查。

同样,如第2步所述,我必须重新启动visual studio两次,才能让NuGet Package Manager控制台在更新我的NuGet Package Manager版本后正常工作。第一次启动控制台时出现错误,第二次运行enable-migrations命令时,“调用带8个参数的createinstancefrom的异常无法加载文件或程序集EntityFramework”。

但是,重新启动visual studio似乎可以解决这些问题。