问题出现环境
:
Windows 7 x64系统,安装VS 2017社区版,EntityFramework 6.0已在安装VS时一并安装。
问题
:
首次在ASP.NET Core项目中使用Code First模式的Entity Framework框架,在添加EF工具并做初始化迁移(perform initial migration),执行Add-Migration Initial遇到以下错误:
PM> Add-Migration Initial
Add-Migration : 无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ Add-Migration Initial
+ ~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Add-Migration:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
网上关于此问题,有其他环境下的解决方案,其思路具有参考意义,但环境不同解决细节也不同。
参考链接如下:
http://www.cnblogs.com/pari-Zhong/p/5339028.html
在本人这个环境下,对PowerShell的ExecutionPolicy也是执行了设置了的。之后的细节如下:
1、 编译项目。首次在项目中添加EF Core后,这一步必须做,否则都找不到后续要导入的 EntityFrameworkCore.psd1 模块。
2、找到前述文件的位置,使用Import-Module命令导入。我这里为: Import-Module C:\Users\{用户名}\.nuget\packages\microsoft.entityframeworkcore.tools\1.1.1\tools\EntityFrameworkCore.psd1
执行信息如下:
PM> Import-Module C:\Users\*\.nuget\packages\microsoft.entityframeworkcore.tools\1.1.1\tools\EntityFrameworkCore.psd1
模块“EntityFrameworkCore”中的某些导入命令的名称包含未批准的动词,这些动词可能导致这些命令名不易被发现。若要查找具有未批准的动词的命令,请使用 Verbose 参数再次运行 Import-Module 命令。有关批准的动词列表,请键入 Get-Verb。
之后问题解决,执行Add-Migration Initial ,Update-Database这些命令都正常了。