คอนโซลตัวจัดการแพ็คเกจเปิดใช้งาน -Migrations CommandNotFoundException ในโครงการ VS ที่ระบุเท่านั้น


122

ฉันพยายามเรียกใช้คำสั่ง 'Enable-Migrations' ในโปรเจ็กต์ใหม่และฉันได้รับข้อความ:

PM> 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, verif
y that the path is correct and try again.
At line:1 char:18
+ Enable-Migrations <<<< 
    + CategoryInfo          : ObjectNotFound: (Enable-Migrations:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

แต่ในโปรเจ็กต์อื่น ๆ ทั้งหมดคำสั่งทำงานได้ดี

เหตุใดจึงเกิดขึ้น

BTW ฉันใช้ VS2010 Professional SP1

แก้ไข:ฉันติดตั้งใหม่ด้วย commmand: Install-Package EntityFramework -IncludePrerelease และปัญหาก็หายไป


2
สวัสดีโปรดเพิ่มโซลูชันของคุณเป็นคำตอบและทำเครื่องหมายว่ายอมรับ (ซึ่งคุณสามารถทำได้ในอีก 2 วันหลังจากนั้น) ดังนั้นจะไม่แสดงเป็นคำถามที่ยังไม่มีคำตอบ
Gert Arnold

1
ฉันมีปัญหาเดียวกันนี้ แต่ดูเหมือนจะไม่มีสิ่งใดในชุดข้อความนี้ คุณติดตั้งวิชวลสตูดิโอใหม่ทั้งหมดหรือเรียกใช้คำสั่งนั้น?
ObedMarsh

ฉันแค่เรียกใช้คำสั่ง ...
Eduardo Brites

2
น่าเศร้าที่ผลลัพธ์ของคำสั่งนั้นสำหรับฉันเป็นเพียงแค่ "'EntityFramework 6.1.0' ที่ติดตั้งแล้ว" และยังไม่มี add-migration หรือ enable-migrations เป็นคำสั่งที่ถูกต้อง
ร์

ฉันได้รับการติดตั้งแพ็คเกจ: ไม่พบแพ็คเกจ 'EntityFramework' เมื่อฉันลองวิธีแก้ปัญหาของคุณ
Naguib Ihab

คำตอบ:


85

เพียงแค่เริ่ม Visual Studio ใหม่ก็ใช้ได้ผลสำหรับฉัน ไม่ต้องติดตั้งแพ็คเกจ ฯลฯ


8
การรีสตาร์ท VS ก็ใช้ได้ผลสำหรับฉันเช่นกันดีใจที่ได้ลองทำก่อนที่จะพยายามติดตั้ง EntityFramework ใหม่
SM3RKY

5
การรีสตาร์ทใช้งานได้กับ Visual Studio 2015 ไม่จำเป็นต้องติดตั้งแพ็คเกจ
jonas

5
หมายเหตุ - ฉันมีปัญหานี้ทุกครั้งที่ต้องติดตั้งแพ็คเกจของฉัน (เช่นการดึง repo ใหม่) ดูเหมือนว่า VS ต้องรีสตาร์ทก่อนที่ PM จะเริ่มต้นอย่างถูกต้องด้วยแพ็คเกจใหม่ (VS Community 2015 Update 1)
Jono

2
การดึง repo ใหม่ยังทำให้เกิดสิ่งนี้สำหรับฉัน รีสตาร์ทได้รับการแก้ไขแล้ว (VS Enterprise 2015 Update 2)
Mike Rouse

84

ฉันติดตั้งใหม่ด้วย commmand: Install-Package EntityFramework -IncludePrelease และปัญหาก็หายไป


13
ฉันสร้างโซลูชันของฉันแล้วปิดและเปิด VS 2013 อีกครั้งและใช้งานได้
ลูกา

โปรดทราบว่าEntityFrameworkรองรับเฉพาะ. net framework 4.0 และ 4.5 ดังนั้นหากคุณใช้. net framework 4.6 หรือสูงกว่าก็ไม่ได้ผล
Tân

1
@ TânNguyễn - นั่นอะไร? EntityFramework 6.1.3 NuGet ของฉันทำงานได้ดีในโครงการ 4.6.x ของฉัน
bkwdesign

การรีสตาร์ทไม่ได้ทำเพื่อฉัน แต่สิ่งนี้ทำได้
robbpriestley

29

ปัญหานี้เกิดขึ้นเนื่องจากเราไม่ได้ติดตั้ง Entity Framework โปรดติดตั้ง Entity Framework โดยใช้คำสั่งด้านล่าง

Install-Package EntityFramework -IncludePrerelease

เมื่อติดตั้งแล้วให้เลือกโปรเจ็กต์ในโปรเจ็กต์เริ่มต้นของคอนโซลตัวจัดการแพ็กเกจแบบเลื่อนลง

ตรวจสอบให้แน่ใจว่าอย่างน้อยหนึ่งคลาสในโครงการของคุณสืบทอดมาจากบริบทข้อมูลหรือใช้คลาสด้านล่าง:

public class MyDbContext : DbContext
    {
        public MyDbContext()
        {
        }
    }

หากเราไม่ทำเช่นนี้เราจะได้รับข้อผิดพลาดอื่น:

No context type was found in the assembly

หลังจากเสร็จสิ้นสิ่งเหล่านี้คุณสามารถเรียกใช้

enable-migrations

ทำงานให้ฉัน ขอบคุณ
Najeeb

ทำงานให้ฉันวันนี้กับ VS 2019
perezdr

17

การรีสตาร์ท Visual Studio ด้วยสิทธิ์ของผู้ดูแลระบบช่วยแก้ปัญหาให้ฉันได้


13

ตรวจสอบให้แน่ใจว่าคุณกำลังเรียกใช้ Visual Studio ในฐานะผู้ดูแลระบบ


1
ฉันใช้ VS ในฐานะผู้ดูแลระบบ ตอนนั้นฉันไม่รู้ว่าเราต้องติดตั้งแพ็คเกจในแต่ละโปรเจ็กต์
Eduardo Brites

12

ฉันมีปัญหาเดียวกันกับ VS 2019 Preview, .Net Core และ EntityFramework Core

ปรากฎว่าฉันต้องติดตั้งผ่าน NuGet Microsoft.EntityFrameworkCore.ToolsและMicrosoft.EntityFrameworkCore.Design. เมื่อทำเสร็จแล้วมันก็เหมือนมีเสน่ห์


10

ขั้นแรก "Install-Package EntityFramework -IncludePrerelease" จากนั้นการรีสตาร์ท Visual Studio ในฐานะผู้ดูแลระบบทำงานร่วมกันสำหรับฉัน


3

ใน Visual Studio 2012 ฉันมีข้อผิดพลาดเดียวกัน ต้องถอนการติดตั้ง NuGet (Tools> Extensions and Updates> Installed> All: NuGet Package Manager: Uninstall button) จากนั้นปิด Visual Studio จากนั้นเปิด Visual Studio อีกครั้งและติดตั้ง NuGet ใหม่ (เครื่องมือ> ส่วนขยายและการอัปเดต> ออนไลน์> แกลเลอรี Visual Studio: NuGet Package Manager: ปุ่มดาวน์โหลด) จากนั้นในหน้าต่างต่อไปนี้: คลิกปุ่มติดตั้งจากนั้นคลิกปุ่มปิด จากนั้นปิดและเปิด Visual Studio อีกครั้ง


สิ่งนี้ใช้ได้ผลสำหรับฉันฉันคิดว่าเป็นตัวเลือกที่ดีกว่าการบังคับให้อัปเกรดเป็นรุ่นก่อนวางจำหน่าย
OverMars

2

สิ่งที่แก้ไขอาการนี้สำหรับฉัน (VS2013) คือการถอนการติดตั้งจากนั้นติดตั้งแพ็คเกจ EF ใหม่ด้วย Nuget ความแตกต่างในไฟล์ csproj เปลี่ยนสิ่งนี้ ...

<Reference Include="EntityFramework">
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

... ลงในนี้ ...

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

ฉันยังไม่เข้าใจว่าทำไม แต่อย่างน้อยมันก็ได้ผล


ฉันมีปัญหากับการเพิ่มการโยกย้าย / อัปเดตฐานข้อมูล ฯลฯ ฉันลองวิธีแก้ปัญหามาแล้วหลายวิธี แต่ถึงแม้ว่าฉันแน่ใจว่าได้ลองถอนการติดตั้งและติดตั้ง EF ใหม่แล้ว แต่ก็ไม่ได้ผล จนถึงตอนนี้เมื่อมันได้ นี่ไม่ใช่ครั้งแรกที่ฉันมีปัญหากับแพ็คเกจ EF :(
GeoffM

2

ใน. NET Core ฉันสามารถเข้าถึงความละเอียดเดียวกันตามที่อธิบายไว้ในคำตอบที่ยอมรับได้โดยป้อนสิ่งต่อไปนี้ในคอนโซลตัวจัดการแพ็คเกจ:

Install-Package EntityFramework.Core -Pre

2

ฉันมีปัญหาเดียวกันและฉันได้ลองใช้วิธีแก้ปัญหาส่วนใหญ่ที่จัดทำโดยคนอื่น ๆ แต่มันใช้ได้ผลกับฉันตามขั้นตอนด้านล่าง ฉันมี VS 2017

ขั้นตอน:

Install-Package EntityFramework -IncludePrerelease

จากนั้นสร้างชั้นเรียนเป็น

public class MyDBContext : DbContext { public MyDBContext() { } }

และในการดำเนินการครั้งสุดท้าย

Enable-Migrations -EnableAutomaticMigrations

สิ่งที่ไม่ได้ผลสำหรับฉัน:

: รีสตาร์ท VS.

: เฉพาะคำสั่ง "Enable-Migrations" ซึ่งไม่มี -EnableAutomaticMigrations

: การกู้คืนหรืออัปเดต Nuget Package Manager

ข้อผิดพลาดเดิมของฉันในตอนแรกคือ

/ * คำว่า 'enable-migration' ไม่รู้จักเป็นชื่อของ cmdlet, ฟังก์ชัน, ไฟล์สคริปต์หรือโปรแกรมที่ทำงานได้ ตรวจสอบการสะกดชื่อหรือถ้ารวมพา ธ ตรวจสอบว่าพา ธ ถูกต้องแล้วลองอีกครั้งที่บรรทัด: 1 char: 1 + enable-migration + ~~~~~~~~~~~~~~ ~~ + CategoryInfo: ObjectNotFound: (enable-migration: String) [], CommandNotFoundException * /


1

ฉันมีปัญหาเดียวกันและพบว่าเป็นเพราะอักขระบางตัวในเส้นทางโครงการเช่น [หรือ] ฉันแก้ไขเส้นทางโครงการและทำงานได้ดี!


1

Enable-Migrations -EnableAutomaticMigrations


1
หลังจากลองใช้วิธีแก้ปัญหาหลายวิธีแล้วโซลูชันของคุณใช้ได้ดีสำหรับฉัน
nguyenhoai890

ทำงานให้ฉันใน Visual Studio Community 2015 ขอบคุณ (โซลูชันอื่น ๆ ทั้งหมดล้มเหลวในกรณีของฉัน)
fedeteka

1

เนื่องจากฉันมีโฟลเดอร์การย้ายข้อมูลอยู่แล้วฉันจึงรีสตาร์ท Visual Studio และรัน Update-Database -verbose ในคอนโซลตัวจัดการแพ็คเกจ ที่ได้ผลสำหรับฉัน


1

ฉันลองทำตามคำแนะนำทั้งหมดข้างต้นแล้ว แต่ไม่มีอะไรได้ผลสำหรับฉันฉันจึงอัปเดตNuget Package Managerและใช้งานได้ ..


1
  1. ติดตั้ง Entity framework ในโปรเจ็กต์ปัจจุบันโดยใช้คำสั่งด้านล่าง: PM> Install-Package EntityFramework -IncludePrerelease

  2. เพิ่มคลาส "MyDBContext" ในโฟลเดอร์ Model ตามที่ระบุด้านล่าง:

    คลาสสาธารณะ MyDBContext: DbContext {public MyDBContext () {}}

  3. ตอนนี้เปิดใช้งานการย้ายข้อมูลสำหรับโปรเจ็กต์ปัจจุบันด้วยคำสั่งด้านล่าง: PM> enable-migrations


1

เรียกใช้ในฐานะผู้ดูแลระบบ vs = >> เปิดเปิดโครงการ

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database


0

ฉันมีหลายโครงการในโซลูชัน แต่ฉันมีชุดโครงการเริ่มต้นที่ถูกต้องดังนั้นฉันจึงคิดว่ามันน่าจะใช้ได้

ในท้ายที่สุดฉันต้องเพิ่ม-StartupProject MyProjectNameตัวเลือกให้กับคำสั่ง


0

วิธีแก้ปัญหาเหล่านี้ไม่ได้ผลสำหรับฉัน วิธีแก้ปัญหาของฉันคือการลบpackages/EntityFramework.6.1.3และRestore NuGet Packages

ฉันสังเกตเห็นว่าpackages/EntityFramework.6.1.3/tools/EntityFramework.psd1หายไปจึงเป็นสาเหตุ มันถูกลบออกอย่างไรในตอนแรกแม้ว่าฉันจะไม่มีเงื่อนงำ


0

ตรวจสอบว่ามีหัวข้อ config "entityFramework" หรือไม่และอธิบายไว้ในไฟล์. config ของคุณ

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/></configSections>

        <entityFramework>
            <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
            <providers>
                <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
            </providers>
        </entityFramework>

0

ตรวจสอบเวอร์ชันของ Entity Framework

หากเป็น 6.3 ให้ปรับลดรุ่นเป็น 6.2 และควรใช้งานได้ดี


2
โปรดอธิบายอย่างละเอียดเกี่ยวกับเรื่องนี้ เหตุใดบางคนจึงควรดาวน์เกรดเวอร์ชันไลบรารีที่ติดตั้งเพื่อแก้ไขปัญหานี้
andrensairr

0

ฉันเพิ่งมีปัญหาเดียวกันในasp.net core VS2019

สิ่งนี้แก้ไขได้:

Install-Package Microsoft.EntityFrameworkCoreInstall-Package
Install-Package Microsoft.EntityFrameworkCore.Tools

อย่าลืมตั้งค่าโครงการเริ่มต้นใน Package Manager Console เป็นโครงการฐานข้อมูลของคุณในกรณีที่แตกต่างกัน

ในขณะที่ดำเนินการย้ายข้อมูลโครงการเริ่มต้นก็ดูเหมือนจะมีบทบาทด้วยเช่นกัน ในขั้นตอนต่อมาการติดตั้งสิ่งนี้กับโครงการเริ่มต้นหลักของฉัน (ไม่ใช่โครงการฐานข้อมูล EF):

Install-Package Microsoft.EntityFrameworkCore.Design

ไม่คิดว่า 8 ปีที่แล้ว. net core มีอยู่จริง
เมื่อ

0

หากคุณสร้างโครงการเว็บ MVC คุณควรเลือกการรับรองความถูกต้องเมื่อสร้างโครงการ ไม่ได้เลือกตามค่าเริ่มต้น ใส่คำอธิบายภาพที่นี่


0

การดาวน์เกรดเป็น 6.2 ช่วยฉันได้
.NET Framework เวอร์ชัน 4.6.1
โครงการในรูปแบบเก่า (ไม่ใช่. NET Standard)
Visual Studio ควรเปิดด้วยสิทธิ์ผู้ดูแลระบบสำหรับการย้ายข้อมูลครั้งแรก
ฉันเดาว่า EF ที่มีเวอร์ชันสูงกว่า 6.2 ต้องการ. NET Framework ล่าสุด


-4

ตรวจสอบว่าโครงการเปิดอยู่ในหน้าต่าง Solution Explorer หรือไม่

นี่อาจเป็นสาเหตุของปัญหาของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.