代码优先在实体框架6 MVC 5

时间:2017-07-10 13:44:44

标签: asp.net-mvc entity-framework ef-code-first ef-migrations

我使用实体框架6和MVC 5并尝试首先在代码中启用迁移,这样我就可以避免数据丢失。但是当在包管理器控制台中键入命令时,它会抛出以下错误:

  

PM> Enable-Migrations -ContextTypeName [ContextClassName]术语   '使能迁移'不被识别为cmdlet的名称,   功能,脚本文件或可操作程序。检查拼写   名称,或者如果包含路径,请验证路径是否正确   再试一次。行:1个字符:1   + Enable-Migrations -ContextTypeName [ContextClassName]   + ~~~~~~~~~~~~~~~~       + CategoryInfo:ObjectNotFound :( Enable-Migration:String)[],CommandNotFoundException       + FullyQualifiedErrorId:CommandNotFoundException

我检查了所有重复项,但在我的案例中没有一项是有效的。

1 个答案:

答案 0 :(得分:3)

这里有两种可能的情况。

  1. 未安装或未正确安装实体框架。如果你确实有引用它,那么首先要做:

    PM> Uninstall-Package EntityFramework -Force
    

    然后,

    PM> Install-Package EntityFramework
    

    确保之后重新启动Visual Studio

  2. 实际正在使用Entity Framework Core,或者您已将Entity Framework添加到在完整框架上运行的ASP.NET Core项目中。在任何一种情况下,都不会有可用的Entity Framework包管理器命令。如果您错误地安装了EF Core,请将其删除并安装EF6。如果您有一个ASP.NET Core项目,则必须添加一个运行在EF6参考的完整框架上的控制台应用程序或类库。您将在此处管理所有实体,并针对此项目运行包管理器命令。原因是EF6包管理器命令与ASP.NET Core不兼容,即使您在完整框架上运行也是如此。