Ошибка первой ошибки Framework Entity Framework
Я новичок в MVC 4 и инфраструктуре сущности, и когда я запускаю эту команду из консоли диспетчера пакетов:
Enable-Migrations -ContextTypeName MyFirstMvcApp.Models.InventoryDbContext
Join-Path: не может связывать аргумент с параметром 'Path', потому что он равен null.
Я получаю следующую ошибку:
Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:363 char:27
+ $toolsPath = Join-Path <<<< $installPath tools
+ CategoryInfo : InvalidData: (:) [Join-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand
Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:392 char:73
+ $utilityAssembly = [System.Reflection.Assembly]::LoadFrom((Join-Path <<<< $toolsPath EntityFramework.PowerShell.Utility.dll))
+ CategoryInfo : InvalidData: (:) [Join-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand
You cannot call a method on a null-valued expression.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:393 char:50
+ $dispatcher = $utilityAssembly.CreateInstance <<<< (
+ CategoryInfo : InvalidOperation: (CreateInstance:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At D:\GitProjects\MyFirstMvcApp\trunk\packages\EntityFramework.6.0.0-alpha2\tools\EntityFramework.psm1:426 char:19
+ (Join-Path <<<< $runner.ToolsPath EntityFramework.PowerShell.dll),
+ CategoryInfo : InvalidData: (:) [Join-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand
Как это исправить?
Обратите внимание, что я использую Visual Studio 2010 Ultimate с пакетом обновления 1, и я установил MVC4 в этой ссылке.
Ответы
Ответ 1
Исправлено это путем удаления и повторной установки сущности.
В интересах других, вот команды...
Удалить
PM > Uninstall-Package EntityFramework -Force
После удаления, переустановите EntityFramework:
PM > Install-Package EntityFramework -Pre
Там! Это исправлено. Хотя я до сих пор не знаю, что вызвало проблему.
Ответ 2
Я столкнулся с той же проблемой, вот как я решил проблему,
Я использую Visual Studio 2019 и, следовательно, я установил последнюю платформу Entity Framework 6.3.0 (стабильную). Я столкнулся с проблемой, когда запускал команду Enable-Migrations, я пытался переустановить платформу Entity, но она не сработала. Я установил старую версию 6.2.0 из менеджера пакетов Nuget, по-видимому, она работала.
Ответ 3
Визуальная студия 2019:
Uninstall-Package EntityFramework -Force
затем
Установочный пакет EntityFramework -Pre -Версия 6.2.0
что-то не так с v6.3.0
Ответ 4
Несколько лет спустя...
Другой возможной причиной этой проблемы является формат VS 2017 csproj, или, точнее, подход PackageReference в отличие от использования packages.config.
С новым подходом к включению пакетов Nuget с использованием формата PackageReference в файлы проекта сценарий установки EntityFramework не выполняется (это известный факт для этого нового подхода включения пакетов Nuget). В связи с этим команды PowerShell не готовы к выполнению.
В настоящее время обсуждается этот вопрос в хранилище GitHub Entity Framework.
До тех пор, пока это не будет исправлено (либо сотрудниками NuGet, либо сотрудниками EF) для запуска миграций (речь идет о EF 6, а не EF Core!), Вам необходимо придерживаться "старого" способа включения пакетов Nuget с использованием пакетов. Конфиг подход.
Проверьте настройки Visual Studio на
Tools -> Options -> NuGet Package Manager -> General
и убедитесь, что
Default package management format
установлен на Packages.config
.
Обратите внимание, что вам придется удалить все пакеты, сохранить проект, перезапустить Visual Studio, а затем переустановить все пакеты при переключении этого параметра.
В текущей версии VS 2017 (я думаю, начиная с версии 15.4) есть автоматическое преобразование из Packages.config в PackageReference, но не наоборот (к сожалению).
Ответ 5
У меня была та же проблема, и я решил ее, изменив Startup Project
.
У меня есть 5 проектов в одном и том же решении, и каждый раз, когда я Right Click
и Set as startup
участвую в проекте не ASPNET CORE, я получаю такую ошибку.
Ответ 6
Удаление Entity Framework не помогло мне.
Оказалось, что проблема не была Visual Studio
или Entity Framemwork
, но это был факт, что я запускал PowerShell 2
(на Windows 7
).
Entity Framework
и Visual Studio
требуют PowerShell 3
.
После обновления и перезагрузки проблема исчезла.
Надеюсь, это поможет нескольким людям.
Здесь вы можете найти PowerShell → https://www.microsoft.com/en-us/download/details.aspx?id=40855
Ответ 7
В моем случае ни один из вышеперечисленных решений не работал, поэтому я быстро просмотрел файл packages.config и, к моему удивлению, нашел две записи для Entity Framework
<package id="EntityFramework" version="6.1.1" targetFramework="net45" />
<package id="EntityFramework" version="6.1.3" targetFramework="net45" />
Обратите внимание, что они разные версии, не знаю, как это могло произойти. Во всяком случае, как только я удалил старый из файла packages.config, то в итоге получился только этот:
<package id="EntityFramework" version="6.1.3" targetFramework="net45" />
Я мог бы затем Enable-Migrations без проблем.
Ответ 8
Я столкнулся с той же проблемой при работе с миграциями Code First.
Что мне помогло, так это перейти к диспетчеру пакетов NuGet, а затем выполнить поиск Entity Framework
.
Там я установил Pre-release version
, затем я выбрал Latest Stable version
и установил его.
После этого все работало идеально.
Ответ 9
Начиная с версии 6.3, инструменты Entity Framework поддерживают новый формат проекта в стиле SDK.
Однако эта проблема все еще может возникать, когда проект, содержащий ваши миграции, использует новый формат в стиле SDK, в то время как запускаемый проект использует классический формат csproj.
Чтобы это исправить, заставьте оба проекта использовать один и тот же формат csproj.
Ответ 10
У меня была та же проблема, когда я обновил EntityFramework до версии 6.3.0, поэтому, когда я вернулся к 6.2.0, это исправило проблему, поэтому я советую вам сделать то же самое
Ответ 11
Я столкнулся с этой проблемой при обновлении до EntityFramework "6.3.0" с "6.2.0". Проблему и обходной путь можно найти здесь EF 6.3.0 Команды PMC выдают ParameterBindingValidationException
, когда Startup Project представляет собой веб-приложение.
Проблема возникает, когда у вас есть несколько проектов, и вы устанавливаете проект ASP.NET как проект запуска
Обходной путь предлагается по ссылке:
Если вы добавили в решение новое фиктивное консольное приложение и установили в него ежедневную сборку EntityFramework, то будет использоваться та версия команд, которая включает в себя исправление. Команды отлично работают с проектами, ссылающимися на EF 6.3.
Персональное решение:
Настройка запуска проекта не ASP.NET проект исправил проблему в моем случае. Обратите внимание, что вам придется скопировать строки подключения в соответствующий файл конфигурации проекта, если вы их используете.