Entity Framework 4.3迁移错误

本文关键字:迁移 错误 Framework Entity | 更新日期: 2023-09-27 18:21:48

我刚刚安装了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项目)。

本演练提供了更多信息

Entity Framework 4.3迁移错误

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

本演练提供了更多信息

有时,即使启用了迁移,也会出现此问题。这意味着配置文件已被删除。在这种情况下,您可以运行

Enable-Migrations -Force 

在Package Manager控制台中。-Force参数用于覆盖迁移配置文件。

如果您已经启用迁移,并且在一些窗口更新后才开始看到此错误,请确保使用NuGet Package Manager在所有项目中使用相同版本的实体框架。

最近的windows更新可能已将更新版本的实体框架安装到活动项目中。

背景:大约在2016年3月16日,当我试图将迁移添加到一个项目时,我开始遇到"无迁移配置类型"错误,我已经启用了迁移,并且之前已经成功完成了迁移。

我注意到,在3月10日左右,实体框架6的一个新的稳定版本已经发布。

如果我在enable migrations命令中指定了-ContextTypeName参数,我会得到一个错误,指示迁移已经启用。

我在进行故障排除时遇到的另一个错误表明,配置类型不是从System.Data.Entity.ModelConfiguration.EntityTypeConfiguration继承的,尽管它是。

这让我相信不同版本的实体框架是相互冲突的。

分辨率:

1) 工具->Nuget软件包管理器->管理解决方案的Nuget软件包

2) (不确定这一步骤是否必要,但..)我将Nuget Package Manager的版本更新为最新版本。此外,在更新了我的Nuget Package Manager版本后,我必须重新启动Visual Studio两次,Nuget命令行才能正常工作。

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

a。您可能会在那里看到多个版本的实体框架。

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

同样,如步骤2中所述,在更新了NuGet Package Manager版本后,我不得不重新启动visual studio两次,以使NuGet Package管理器控制台正常工作。我第一次启动控制台时遇到错误,第二次运行enable migrations命令时,"使用8个参数调用createinstancefrom的异常无法加载文件或程序集EntityFramework"。

然而,重启visualstudio似乎解决了这些问题。

对我来说,发生此错误是因为我在VS2019中的Package Manager控制台的"默认项目"中选择了错误的项目。

即使启用了迁移,如果在Package Manager控制台的下拉菜单中选择了不正确的默认项目,也可能发生所描述的行为。一种非图形化的方法是展开您正在使用的命令,并使用参数-ProjectName 指定正确的项目名称

Update-Database -Verbose -ProjectName TheCorrectProjectName

你可能仍然会收到类似的警告

无法确定有效的启动项目。正在使用项目"TheCorrectProjectName"。您的配置文件和工作目录可能未按预期设置。使用-StartUpProjectName参数可以显式设置一个。

尽管如此,这个额外的命令行参数为我解决了这个问题。