คำว่า 'Update-Database' ไม่รู้จักเป็นชื่อของ cmdlet


114

ฉันใช้ EF5 beta1 และในขณะที่ฉันสามารถเรียกใช้ "Update-Database" มาก่อน ตอนนี้ฉันปิด Visual Studio แล้วฉันไม่สามารถเรียกใช้งานได้ ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

ฉันได้ลองติดตั้ง EF5b1 อีกครั้งและในขณะที่ทำสำเร็จ (ติดตั้งแล้ว) 'Update-Database' ก็ยังไม่ทำงาน

ใครช่วยได้บ้าง ???


3
เมื่อวานนี้ฉันมีปัญหาคล้ายกันกับ cmdlet อื่นและการรีสตาร์ทระบบทั้งหมดช่วย ...
nemesv

11
ไม่จำเป็นต้องรีบูต เราไม่เรียกใช้สคริปต์ init.ps1 หลังจากดำเนินการคืนค่าแพ็กเกจ (นั่นคือสาเหตุที่ไม่พบคำสั่ง) เพียงแค่ออกและรีสตาร์ท VS (หรือยกเลิกการโหลด / โหลดโครงการใหม่)
RickAndMSFT

1
วันนี้ฉันเกิดขึ้นกับฉัน ฉันเปิด repo สำหรับโครงการทีมและจำเป็นต้องกู้คืนแพ็คเกจบางอย่าง หลังจากการคืนค่าคำสั่งupdate-databaseand add-migrationจะไม่ทำงาน การรีสตาร์ท Visual Studio แก้ไขได้
jmbertucci

คำตอบ:


169

ช่วงนี้ฉันประสบปัญหานี้หลายครั้ง ฉันพบวิธีแก้ปัญหาที่ได้ผลคือปิด Package Manager Console ปิด Visual Studio แล้วเปิดใหม่ การรีบูตเครื่องก็ใช้งานได้เกือบตลอดเวลา แต่ไม่เสมอไป


7
โดยปกติคุณต้องออกจากการรีสตาร์ท VS ดูความคิดเห็นของฉันในคำถามเดิม ในบางครั้งคุณอาจต้องออก / รีสตาร์ท VS สองครั้ง
RickAndMSFT

1
เพิ่งประสบปัญหาและรีสตาร์ท Visual Studio และสิ่งต่างๆก็ทำงานอีกครั้ง ขอบคุณ.
Shubh

ขอบคุณสำหรับวิธีแก้ปัญหาที่มีประสิทธิภาพหากไม่ใช่วิธีที่ไม่ดี ดูเหมือนว่าทั้งหมดจะได้ผลจากสิ่งที่ฉันได้ลองทำมาแล้วกว่าล้านอย่าง
ProfK

1
ใช่แน่นอน นี่คือทางออก วิธีแก้ปัญหาที่ถูกต้อง ขอบคุณ Microsoft!
Khateeb321

2
ฉันติดตั้ง "Microsoft.EntityFrameworkCore.Tools" Version = "3.1.0" ในโปรเจ็กต์ข้อมูลของฉันและ "Microsoft.EntityFrameworkCore.Design" Version = "3.1.0" ในโปรเจ็กต์เว็บหลักของฉันซึ่งช่วยแก้ปัญหาให้ฉันได้
HaBo

51

หากคุณใช้ Entity Framework:

ข้อความแสดงข้อผิดพลาด: "ข้อความแสดงข้อผิดพลาด (จากคำสั่ง Update-Database ใน PMC): คำว่า 'Update-Database' ไม่รู้จักเป็นชื่อของ cmdlet ฟังก์ชันไฟล์สคริปต์หรือโปรแกรมที่ใช้งานได้ตรวจสอบการสะกดของชื่อ หรือหากรวมเส้นทางไว้ให้ตรวจสอบว่าเส้นทางนั้นถูกต้องแล้วลองอีกครั้ง "

วิธีแก้ไข: "ออกจาก Visual Studio เปิดโปรเจ็กต์ใหม่แล้วลองอีกครั้ง"

สำหรับข้อมูลเพิ่มเติมโปรดไปที่: Advanced Entity Framework 6 สถานการณ์สำหรับเว็บแอปพลิเคชัน MVC 5 (12 จาก 12)

หวังว่านี่จะช่วยได้ ...


@AlbatrossCafe ชัวร์ :)
Murat Yıldız

1
ทีมผู้พัฒนา VS ควรให้ปุ่ม Refresh VS สำหรับปัญหาดังกล่าว :)
sohaib javed

@sohaibjaved สำหรับปัญหาบางอย่างการรีสตาร์ท VS อาจไม่เพียงพอและจำเป็นต้องมีการล้างไดเรกทอรีตามที่ระบุไว้ในVisual Studio 2015 ช้ามาก FYI ...
Murat Yıldız

ฉันสูญเสียการนับจำนวนสิ่งที่แก้ไขได้โดยการรีสตาร์ท Visual Studio
EKanadily

21

บางครั้งเมื่อฉันโหลด VS ฉันจะเห็นสิ่งนี้ในคอนโซลตัวจัดการแพ็คเกจของฉัน:

ค่าไม่สามารถเป็นค่าว่างได้

ชื่อพารามิเตอร์: path1

ฉันไม่รู้ว่าอะไรเป็นสาเหตุ แต่ดูเหมือนว่ามีบางอย่างผิดพลาดระหว่างการเริ่มต้นของคอนโซล Powershell ซึ่งขัดขวางการลงทะเบียนโมดูลเฉพาะเช่นส่วนขยาย EF powershell คุณสามารถโหลดได้ด้วยตนเองอย่างไรก็ตาม:

Import-Module .\packages\EntityFramework.6.1.1\tools\EntityFramework.psm1

ตรวจสอบให้แน่ใจว่าคุณแทนที่ 6.1.1 ด้วย Entity Framework เวอร์ชันปัจจุบันของคุณ


4
ขอบคุณ! ทางออกเดียวที่ใช้ได้ผลสำหรับฉัน แต่สำหรับใครก็ตามที่ใช้ EF 6.1.3 กับ VS 2015 มีข้อผิดพลาดใน EntityFramework.psm1 และมีแพทช์ที่นี่stackoverflow.com/a/30062684/1267778
รัฐสภา

18

การติดตั้งแพคเกจ nuget ใหม่ช่วยแก้ไขปัญหานี้ให้ฉัน

กล่าวคือดำเนินการ

Install-Package EntityFramework -Version 5.0.0

ในตัวจัดการแพ็คเกจ


1
สิ่งนี้ใช้ได้กับฉัน โครงการที่ฉันทำโดยใช้ EF และฉันถือว่าติดตั้งแพคเกจโดยอัตโนมัติ เปิดออกมันไม่ใช่ นักพัฒนาเพิ่งอ้างอิงโดยตรงกับ EF dll ต้องติดตั้งแพ็คเกจ EntityFramework ในโปรเจ็กต์เพื่อให้ Update-Database cmd ทำงานได้
stack247

คำตอบนี้ดูเหมือนไม่น่าจะช่วยได้ แต่มันช่วยชีวิตฉันได้ ขอบคุณ
Nelson Miranda

การปล้ำกับ FK วันนี้โดยใช้ Fluent API เป็นต้นและอย่างใด EntityFramework ก็ยังคงตกอยู่ สิ่งที่ได้ผลจริงสำหรับฉันในบรรทัดเหล่านี้คือการทำอีกUpdate-Package -Reinstall EntityFrameworkอย่างหนึ่ง
Matt Borja

สำหรับฉันติดตั้งใหม่และรีบูต เพียงแค่ติดตั้งใหม่ไม่ทำงานและเพียงแค่รีบูตก็ไม่ทำงานเช่นกัน)
RMazitov

9

คุณจะได้รับข้อผิดพลาดนี้เมื่อติดตั้งเครื่องมือ EF ไม่ถูกต้อง

ลองใช้คำสั่งด้านล่างใน Nuget package manager // ถอนการติดตั้งและติดตั้ง EF เวอร์ชันเดียวกัน

Update-Package "EntityFramework" -reinstall

หากคุณยังคงประสบปัญหาเดิม สร้าง Web Project ใหม่และรันคำสั่งด้านล่างใน nuget

(หมายเหตุ: ไม่จำเป็นต้องสร้างโครงการใหม่ในโซลูชันเดียวกันหรือสถานที่เดียวกัน)

// สิ่งนี้จะอัปเดต EF เป็นเวอร์ชันล่าสุด (รวมถึงเครื่องมือ) // หากคุณต้องการใช้เวอร์ชันเฉพาะให้ใช้-versionแฟล็ก

Update-Package "EntityFramework"

เมื่อเสร็จแล้วให้ chcek โครงการเดิมของคุณและคุณสามารถลบโครงการที่สร้างขึ้นใหม่ได้


ใช่!! ขอบคุณ =) ฉันติดตั้งเฉพาะ EntityFramwork, EF.Design, EF.SqlServer และ EF.SqlServer.Design
Janneman96


9

สำหรับใครที่ใช้. Net Core และ EntityFrameworkCore:

คุณจะต้องติดตั้งMicrosoft.EntityFrameworkCore.Toolsแพ็คเกจเพื่อแก้ไขปัญหานี้

อ่านเพิ่มเติมที่นี่: https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell


นี่พิสูจน์แล้วว่าเป็นทางออกสำหรับฉัน! ขอบคุณ!
blackmambo

4

ฉันมีปัญหาเดียวกันนี้และที่มาของมันอยู่ที่ชื่อพา ธ ของฉันฉันมีชื่อไดเร็กทอรีที่มีวงเล็บตรงเช่นนี้: C:\[PROJ]\TestAppฉันมีปัญหาเดียวกันนี้และต้นกำเนิดของมันอยู่ในชื่อเส้นทางของฉันฉันมีอยู่บนเส้นทางของฉันชื่อไดเรกทอรีที่มีวงเล็บตรงเช่นนี้

เมื่อฉันถอดวงเล็บออกถึงC:\PROJ\TestAppมันก็เริ่มทำงานได้ดี ...


โดยปกติคุณต้องออกจากการรีสตาร์ท VS ดูความคิดเห็นของฉันในคำถามเดิม
RickAndMSFT

@RickAndMSFT นี่เป็นวิธีที่ดีกว่ามากที่ "เพิ่ง" เริ่ม VS ใหม่
ProfK

@Antonio แม้ว่าฉันจะมีปัญหาเดียวกันและวิธีแก้ปัญหาของคุณก็ใช้ได้ผลเช่นกัน
User5590


4

สำหรับผมปัญหาคือรุ่น Nuget

  1. ถอนการติดตั้ง Nuget Package Manager
  2. รีสตาร์ท Visual Studio
  3. ติดตั้ง Nuget Package Manager เวอร์ชันใหม่
  4. จากนั้นเริ่ม Visual Studio ใหม่อีกครั้ง

1
นี่เป็นกรณีของฉัน แต่ฉันต้องการอัปเดต nuget ในส่วนขยายและอัปเดต
โอ๊ค

สิ่งนี้ใช้ได้ผลสำหรับฉัน, ถอนการติดตั้งตัวจัดการแพ็คเกจ nuget, ติดตั้งตัวจัดการแพ็คเกจ nuget ใหม่, สตูดิโอภาพที่เริ่มต้นใหม่, ถอนการติดตั้ง EntityFramework, ติดตั้ง EntityFramework
Rizan Zaky

3

ฉันแก้ไขด้วยการถอนการติดตั้งและติดตั้ง "Microsoft.EntityFrameworkCore" และ "Microsoft.EntityFrameworkCore.Tools" ใหม่


1
หากคุณใช้ EF Core นี่คือคำตอบที่ถูกต้อง หรืออย่างน้อยปัญหาสำหรับฉันMicrosoft.EntityFrameworkCore.Toolsคือไม่ได้ติดตั้ง
Kirk Woll

2

ปัญหานี้ดูเหมือนจะเกิดขึ้นเมื่อคุณเปิดโครงการโดยตรงจาก File Explorer ลองเริ่ม VS ก่อนแล้วจึงเปิดโครงการ - ได้ผลสำหรับฉัน ฉันเดาว่านี่เกี่ยวกับการเข้าถึงเส้นทาง


หลังจากรีสตาร์ทสองสามครั้งและไม่ได้รับการแก้ไขสิ่งนี้ช่วยแก้ปัญหาของฉันได้!
Niklas


0

หากคำตอบอื่นไม่ได้ผล (VS 2017): ล้างแคช NuGet รีสตาร์ท VS จากนั้นกู้คืนแพ็คเกจ


0

ฉันพบว่ามันเกิดจากแพ็กเกจเสียหาย ฉันติดตั้ง Automapper เมื่อติดตั้งไปแล้ว เห็นได้ชัดว่าแพคเกจนี้เสียหายเมื่อฉันพยายามติดตั้งแพ็คเกจอื่น

การลบแพ็คเกจที่เสียหายช่วยแก้ปัญหานี้ให้ฉันได้

จากนั้นคุณสามารถติดตั้ง automapper ใหม่ได้ ปัญหาเกิดจากเวอร์ชัน 5.4 ตอนนี้ฉันใช้ 6.0 อย่างมีความสุขแล้ว


0

สำหรับฉันปรากฎว่าแกน EntityFramework ไม่ได้ติดตั้งในโปรเจ็กต์ของฉัน (เพราะฉันเริ่มต้นด้วยโปรเจ็กต์เปล่า) ดังนั้นการติดตั้งแพ็คเกจEntityFrameworkจึงสามารถแก้ปัญหาได้ บางครั้งหากการติดตั้ง EntityFramework ล้มเหลวให้ลองติดตั้งแต่ละแพ็คเกจทีละรายการ

เช่น

Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.Tools

0

ฉันแก้ไขโดยการอัพเดต Package Manager Console

ฉันไม่ได้รับ Update-Database ใน Package Manager Console จากนั้นฉันรีสตาร์ทหลายครั้ง รีสตาร์ท Windows ด้วย

จากนั้นฉันดาวน์โหลดใหม่จากnugetจากนั้นก็แก้ไขได้


0

ฉันมีปัญหานี้ใน Visual Studio 2015 และแก้ไขได้โดยการอัปเดตเวอร์ชันของ Nuget

เครื่องมือ -> ส่วนขยายและการอัปเดต -> การอัปเดต -> แกลเลอรี Visual Studio


0

วิธีแก้ไขง่ายๆสำหรับฉันคือตรวจสอบให้แน่ใจว่ามีเครื่องหมายขีดกลางระหว่างการอัปเดตและฐานข้อมูลเช่นนี้update-databaseและใช้ตัวพิมพ์เล็ก อาจเป็นเรื่องบังเอิญ แต่เมื่อฉันทำสิ่งนี้ใน Packet Manager Console ฐานข้อมูลได้รับการอัปเดตจริงและฉันได้รับข้อความเสร็จสิ้นแทนที่จะเป็นnot recognized as the name of a cmdlet, function, script fileข้อผิดพลาด


0

ฉันเริ่มมีปัญหาเดียวกันหลังจากที่ฉันเปิดโซลูชัน Visual Studio โดยไม่ได้ตั้งใจกับ Visual Studio 2015 แทนที่จะเป็นปี 2017 โครงการทำงานได้ดีก่อนที่จะเกิดอุบัติเหตุดังกล่าว เป็นโครงการเก่าที่มี EF 5.0 ไม่ใช่ EF Core

ฉันลองทุกอย่างที่แนะนำ - รีสตาร์ท Visual Studio นับครั้งไม่ถ้วนล้างแคช NuGet ลบทุกอย่างในโฟลเดอร์แพ็คเกจติดตั้ง EF 5 ใหม่สำหรับโครงการ - ไม่ดีไม่รู้จักการย้ายข้อมูลเพิ่มเติม หากฉันอัปเกรด EF เป็น 6 มันจะเริ่มจดจำคำสั่ง แต่ฉันยังไม่ต้องการอัปเกรด ดังนั้นทันทีที่ฉันเปลี่ยนกลับไปเป็น EF 5 ปัญหาก็กลับมา

สิ่งเดียวที่ช่วยฉันได้ในที่สุดคือทำสิ่งต่อไปนี้:

  • ปิด Visual Studio
  • ลบทุกอย่างออกจากโฟลเดอร์แพ็คเกจ
  • ลบโฟลเดอร์. vs ในรูทของโซลูชันของคุณ โดยปกติโฟลเดอร์นี้จะถูกซ่อนคุณต้องเปิดการตั้งค่าแสดงไฟล์และโฟลเดอร์ที่ซ่อนอยู่หรือเลือกรายการที่ซ่อนอยู่ในแท็บมุมมองโฟลเดอร์
  • เริ่ม Visual Studio และเปิดโซลูชันของคุณ มันจะขอกู้คืนแพ็คเกจ NuGet ยอมรับมัน

ในที่สุดคำสั่ง EF ก็เริ่มทำงานอีกครั้ง


0

ในกรณีของฉัน:

  • การโหลดโครงการใหม่ไม่ได้ช่วย
  • การรีสตาร์ท VS ไม่ได้ช่วย
  • การรีสตาร์ทคอมพิวเตอร์ไม่ได้ช่วย
  • Reinstal EF ไม่ได้ช่วย

แต่ฉันพบบทความที่มีข้อเสนอแนะในการนำเข้าแพ็คเกจ EF ที่ขาดหายไปด้วยตนเองโดยใช้ PM Conole:

Import-Module .\packages\EntityFramework.X.X.X\tools\EntityFramework.psm1

และวิธีนี้ช่วยแก้ปัญหาของฉันได้


0

ในกรณีของฉันรีสตาร์ท Visual Studio (หลายต่อหลายครั้ง)ไม่ได้ผลขณะที่ฉันกำลังมองหาที่อื่นฉันพบข้อความบนเทอร์มินัลเอาต์พุต:

.NET SDK ปัจจุบันไม่รองรับการกำหนดเป้าหมาย. NET Core 2.2 กำหนดเป้าหมาย. NET Core 2.1 หรือต่ำกว่าหรือใช้. NET SDK เวอร์ชันที่รองรับ. NET Core 2.2

ดังนั้นฉันจึงติดตั้ง. NET Core เวอร์ชันที่ต้องการและคำสั่งก็ทำงานได้สำเร็จ


0

ฉันมีปัญหานี้ใน VS 2019 กับโครงการที่มีอยู่โดยใช้ EntityFramework 6.3.0 โครงการนี้มีการเปลี่ยนแปลงเวอร์ชันแปลก ๆ ในช่วงระยะเวลาหนึ่งและไม่มีอะไรจะทำให้มันทำงานได้ ฉันเชื่อว่าฉันลองทุกคำแนะนำที่ระบุไว้ที่นี่โดยไม่มีโชค

ในที่สุดการปรับปรุงให้เป็นรุ่นก่อนวางจำหน่ายของ EntityFramework (ปัจจุบัน 6.4.0-preview3-19553-01) ได้แก้ไขปัญหาได้โดยการทำงานนี้ในคอนโซลแพคเกจ Update-Package EntityFramework -prereleaseManager: ฉันหวังว่าเมื่อเวอร์ชันนี้เผยแพร่จริงในอีกไม่กี่สัปดาห์ข้างหน้าจะสามารถใช้งานได้ตามปกติ



0

ในกรณีของฉันฉันทำสิ่งต่อไปนี้: - กู้คืนแพ็คเกจ NuGet ที่หายไปโดยคลิกปุ่ม "คืนค่า" ที่ด้านบนของคอนโซลตัวจัดการแพ็คเกจ - เริ่ม Visual Studio ใหม่ - เรียกใช้ update-database


-1

สำหรับฉันปัญหาคือรุ่น Nuget

ฉันลบและติดตั้ง Nuget ใหม่แล้วเริ่ม Visual Studio ใหม่จากนั้นทุกอย่างก็เริ่มทำงาน

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