C# 实体框架4.3迁移错误
我刚刚为迁移安装了EF 4.3-beta1,但我无法让它工作。我得到的错误是:C# 实体框架4.3迁移错误,c#,entity-framework,entity-framework-4,C#,Entity Framework,Entity Framework 4,我刚刚为迁移安装了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 'Projec
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; }
}
公共类主实例
{
public int MasterInstanceId{get;set;}
[必需]公共字符串主机名{get;set;}
[必需]找到公共字符串名称{get;set;}/*解决方案。事实证明,您需要为项目启用迁移。您可以通过在NuGet控制台中运行启用迁移来实现这一点(确保您选择了正确的项目-对我来说,这是project.domain项目)
提供详细信息有时,即使启用了迁移,也可能出现此问题。这意味着配置文件已被删除。在这种情况下,您可以运行
Enable-Migrations -Force
在包管理器控制台中。-Force
参数用于覆盖迁移配置文件。如果您已经启用了迁移,并且在一些windows更新后才开始看到此错误,请确保在使用NuGet包管理器的所有项目中使用相同版本的Entity Framework
最近的windows更新可能已将较新版本的Entity Framework安装到活动项目中
背景:2016年3月16日左右,当我尝试将迁移添加到一个项目时,我开始出现“no migrations configuration type”(无迁移配置类型)错误,在此之前,我已经启用了迁移,并且成功地完成了迁移
我注意到大约在3月10日,EntityFramework6的一个新的稳定版本发布了
如果在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、 在每个版本的Entity Framework上单击“管理”,并确保您的项目使用相同版本的Entity Framework。
•取消选中您未使用的实体框架版本,对于您正在使用的实体框架版本,请确保在需要它的项目中选中它
同样,如步骤2所述,在更新我的NuGet Package Manager版本后,我必须重新启动visual studio两次,以使NuGet Package Manager控制台正常工作。我第一次启动控制台时出错,并且“使用8个参数调用createinstancefrom时出现异常无法加载文件或程序集EntityFramework”第二次运行enable migrations命令时
然而,重新启动visual studio似乎可以解决这些问题。对我来说,发生此错误是因为我在Package Manager控制台的“默认项目”中选择了错误的项目在VS2019中。即使启用了迁移,如果在软件包管理器控制台的下拉菜单中选择了不正确的默认项目,也可能发生所述行为。非图形化的方法是展开正在使用的命令,并使用参数指定正确的项目名称-项目名称
Update-Database -Verbose -ProjectName TheCorrectProjectName
你可能还会收到类似这样的警告
无法确定有效的启动项目。请改用项目“TheCorrectProjectName”。可能未按预期设置配置文件和工作目录。请使用-StartUpProjectName参数显式设置一个
不过,这个额外的命令行参数为我解决了这个问题。你的问题是在程序集中找不到迁移配置类型的Google搜索结果。这是测试版软件,但仍然非常新。我也会尝试在MSDN论坛上发布。好的呼叫->确保你选择了正确的项目这是my问题。请确保选择了正确的项目。我将添加到“不使用添加迁移”
。只需启用它们并运行项目即可。
Update-Database -Verbose -ProjectName TheCorrectProjectName