Ошибка в EF 6.4 The term 'enable-migrations' is not recognized as the name of a cmdlet, function, script file, or operable program
Ранее я пользовался подходом code-first и не было не каких проблем. Установлена была версия EntityFramework 6.2.0. Студия предложила обновить до версии 6.4.4. После обновления я создал новый проект Win Forms попробовал включить миграцию командой: enable-migrations, но теперь выходит ошибка:
> The term 'enable-migrations' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling
of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:18
+ enable-migrations <<<<
+ CategoryInfo : ObjectNotFound: (enable-migrations:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Но, если сменить версию EntityFramework назад на 6.2.0, всё отлично создаётся и нет ошибки. Подскажите пожалуйста, может кто знает, что сменилось с новой версией EntityFramework, что я делаю не так?
UPDATE:
Если просто закрыть проект, а потом заного запустить с версией Entity 6.4.4, при старте сразу же в консоли вылезает вот такая вот ошибка:
> Missing function body in function declaration.
At D:\WindowsFormsApp2\packages\EntityFramework.6.4.4\tools\EntityFramework6.PS2.psm1:241 char:5
+ <<<< WarnIfOtherEFs 'Enable-Migrations'
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingFunctionBody
Import-Module : The module to process 'EntityFramework6.PS2.psm1', listed in field 'ModuleToProcess' of module manifest 'D:\WindowsForm
sApp2\packages\EntityFramework.6.4.4\tools\EntityFramework6.PS2.psd1' was not processed because no valid module was found in any module
directory.
At D:\WindowsFormsApp2\packages\EntityFramework.6.4.4\tools\init.ps1:11 char:18
+ Import-Module <<<< (Join-Path $PSScriptRoot 'EntityFramework6.PS2.psd1')
+ CategoryInfo : ResourceUnavailable: (EntityFramework6.PS2:String) [Import-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleFileNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
Ответы (1 шт):
В EF Core миграции включены сразу по умолчанию и такой команды просто нет:
https://stackoverflow.com/q/44057203/5752652
В версии EF 6.3.0 пошли в направлении "облегчим переход на CORE"
The EF 6.3.0 runtime was released to NuGet in September 2019. The main goal of this release was to facilitate migrating existing applications that use EF 6 to .NET Core 3.0
и вполне возможно, что и удалили эту команду в процессе переписывания кода:
The migrations commands have been rewritten to
PS Полный changelog/whatsnew тут:
https://docs.microsoft.com/en-us/ef/ef6/what-is-new/
Update: очень похоже на вот эту ситуацию:
https://github.com/dotnet/ef6/issues/1348
и решение как и тут такое же - откат на 6.2
В том плане что мне от EF 6 нужна ещё поддержка emdx и она тоже очень сильно хромает, приходится всё чаще шаманить руками в старых проектах -- вижу, что баги в ветке 6.x чинят редко, неохотно и всё внимание на core.