ไม่รู้จักคำว่า“ Add-Migration”


129

ฉันใช้MSDN Tutorialเพื่อเรียกใช้ใน VS2015 คำสั่งPM> Add-Migration MyFirstMigration -context BloggingContextที่รันเมื่อวานนี้สำเร็จ แต่วันนี้มีข้อผิดพลาดต่อไปนี้ซึ่งผู้ใช้รายอื่นชี้ให้เห็นที่นี่ที่นี่ฉันยังลบโฟลเดอร์ Migrations จากโซลูชัน explorer และ db ที่เกี่ยวข้องจากSQL Express 2014 on Win 8.1แต่มีข้อผิดพลาดเดียวกัน แม้ว่าฉันจะเรียกใช้Add-Migration MyFirstMigrationฉันได้รับข้อผิดพลาดเดียวกัน:

Add-Migration : The term 'Add-Migration' 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:1
+ Add-Migration MyFirstMigration -context BloggingContext
+ ~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Add-Migration:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

หมายเหตุ : ฉันใช้ ASP.NET Core 1.0 และ VS2015 เวอร์ชันล่าสุด - อัปเดต 3 เมื่อวันที่ 27 มิถุนายน 2559

อัปเดต

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

> dotnet ef migrations add MyFirstMigration --context BloggingContext
> dotnet ef database update --context BloggingContext

อัพเดท 2a

ต่อไปนี้คือไฟล์ project.json:

{
  "userSecretsId": "aspnet-ASPCore_RTM_CodeFirst_test-bef835d9-9831-41a8-bc3a-cd2f1477a880",

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": {
      "version": "1.0.0",
      "type": "build"
    },
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8"
      ]
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

โปรดอย่าใส่แท็กในชื่อเรื่อง
Tseng

เขียนโปรด project.json ของคุณฉันต้องการดูแพ็คเกจของคุณ
Bassam Alugili

@BassamAlugili ตามคำขอของคุณฉันได้เพิ่ม UPDATE 2 ในโพสต์ของฉันเพื่อเพิ่มส่วนที่เกี่ยวข้องของไฟล์ peoject.json โปรดแจ้งให้เราทราบหากคุณต้องการข้อมูลเพิ่มเติม
Nam

คุณได้รับคำตอบจาก @briceIam (ทีม EF) ฉันคิดว่ามันจะได้ผล!
Bassam Alugili

@BassamAlugili ฉันได้เพิ่มเนื้อหาทั้งหมดของไฟล์ project.json ในส่วน UPDATE 2 ของโพสต์ของฉัน @bricelamโปรดดูความคิดเห็นของฉันภายใต้การตอบสนองจาก สิ่งที่ฉันอาจขาดหายไป?

คำตอบ:


258

มันง่ายมาก

เพียงติดตั้งMicrosoft.EntityFrameworkCore.Toolsแพ็คเกจจาก nuget:

ติดตั้งแพ็คเกจ Microsoft.EntityFrameworkCore.Tools -Version 3.1.5

คุณยังสามารถใช้ลิงค์นี้เพื่อติดตั้งเวอร์ชันล่าสุด: ลิงค์แพ็คเกจ Nuget

คำสั่ง. NET CLI:

dotnet add package Microsoft.EntityFrameworkCore.Tools

ฉันติดตั้งเวอร์ชัน 2.2.6 ตั้งแต่ฉันยังใช้ Visual Studio 2017
BluE

1
ขอบคุณมากนี่เป็นข้อผิดพลาดทั่วไปที่ทุกคนทำ
Nitesh Shaw

1
ฉันต้องรีสตาร์ท Visual Studio ด้วย
Liviu Sosu

เป็นครั้งที่สองที่ฉันได้รับคำตอบนี้และมันก็ไม่สามารถช่วยฉันได้เต็มที่เหมือนที่เคยทำในครั้งแรก ตอนนี้ฉันต้องรีสตาร์ท VS และใช้งานได้ ฉันใช้เวลาสักครู่จนกว่าฉันจะจำได้ว่าการรีสตาร์ทอาจช่วยแก้ปัญหาได้
Liviu Sosu

50

ลองทำตามขั้นตอนต่อไปนี้:

1) เปิดproject.jsonไฟล์และลบ Microsoft.EntityFrameworkCore.Tools ทั้งหมดอ้างอิงจากการอ้างอิงและเครื่องมือส่วน

2) ปิด Package Manager Console ( PMC ) แล้วรีสตาร์ท Visual Studio

3) เพิ่มภายใต้ส่วนการอ้างอิง :

 "Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
 }

4) เพิ่มภายใต้เครื่องมือส่วน

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"

5) รีสตาร์ทอีกครั้ง Visual Studio 2015

6) เปิดPMCและประเภท

Add-Migration $Your_First_Migration_Name$

สิ่งนี้เกิดขึ้นเนื่องจากPMCรู้จักเครื่องมือเมื่อ Visual Studio เริ่มทำงาน


5
ฉันแทบจะไม่สามารถใช้เวลาหนึ่งชั่วโมงในการเขียนโค้ดบน VS2015 โดยไม่ต้องรีสตาร์ท / ติดตั้งใหม่ ...
Ryan Murphy

37

ตรวจสอบให้แน่ใจว่าMicrosoft.EntityFrameworkCore.Toolsมีการอ้างอิงในdependenciesส่วนของproject.jsonไฟล์. NuGet จะไม่โหลดคำสั่ง Package Manager จากtoolsส่วนนี้ (ดูNuGet / Home # 3023 )

{
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  }
}

2
ฉันได้คัดลอกเนื้อหาไฟล์ project.json ทั้งหมดใน UPDATE 2 ของโพสต์ของฉัน Microsoft.EntityFrameworkCore.Toolsอยู่ภายในส่วนการอ้างอิงเช่นกัน Add-MigrationและUpdate-Databaseคำสั่งตามคำแนะนำในการกวดวิชาคืนทำงานก่อน แต่เมื่อฉันลองใช้ในเช้าวันรุ่งขึ้นหลังจากทำการเปลี่ยนแปลงเล็กน้อยกับโมเดลของฉันและลองใช้คำสั่งเหล่านี้อีกครั้งพวกเขาให้ข้อความแสดงข้อผิดพลาดที่อธิบายไว้ในโพสต์ของฉัน ฉันยังลบโฟลเดอร์ Migration และฐานข้อมูลที่เกี่ยวข้องออกจาก SQL Server แต่ฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกันหลังจากเรียกใช้คำสั่งเหล่านี้ สิ่งที่ฉันอาจขาดหายไป?

ฉันก็มีอาการเหล่านี้เช่นกัน ฉันใช้ Visual Studio 2015 Update 3
Kolya_Net

ลองยื่นข้อบกพร่องใน NuGetด้วยขั้นตอนที่ทำซ้ำได้และข้อมูลสภาพแวดล้อมมากมาย ฉันเคยพูดถึงปัญหาในพื้นที่นี้ต่อหน้าทีมงาน แต่พวกเขาไม่สามารถตำหนิได้
bricelam

1
แปลกวิธีนี้ช่วยแก้ปัญหาของฉันได้ถ้าฉันลบออกtoolsและเพิ่มใหม่ในภายหลัง เพียงแค่ย้ายไปที่dependenciesจะส่งผลให้เกิดข้อความแสดงข้อผิดพลาดต่อไปนี้: ไม่สามารถดำเนินการคำสั่งนี้ได้เนื่องจาก 'Microsoft.EntityFrameworkCore.Tools' ไม่ได้ติดตั้งในโครงการ 'src \ <โครงการของคุณ> เพิ่ม 'Microsoft.EntityFrameworkCore.Tools' ในส่วน 'tools' ใน project.json ดูgo.microsoft.com/fwlink/?LinkId=798221สำหรับรายละเอียดเพิ่มเติม
Thorsten Westheider

ฉันใช้ VS2017 ASP.NET Core และมีปัญหาเดียวกัน คำตอบนี้แก้ไขได้เช่นกัน!
Westerlund.io

14

ปัญหาเดียวกัน ... แก้ไขได้โดย dong ต่อไปนี้

1. ) ปิด pm manager 2. ) ปิด Visual Studio 3. ) เปิด Visual Studio 4. ) เปิด pm manager

ดูเหมือนว่าเคล็ดลับคือปิด PM Manager ก่อนปิด VS


ใช่การโหลด PM และ VS ซ้ำเป็นวิธีแก้ปัญหาซึ่งเกิดขึ้นเมื่อเราเปิดโปรเจ็กต์ในสตูดิโอภาพล่าสุดที่สร้างขึ้นก่อนหน้านี้ในรุ่นเก่าด้วยการเปิดโค้ดดังกล่าว VS จะพยายามปรับแต่งอัตโนมัติเพียงไม่กี่ครั้งการปรับแต่งเหล่านั้นสามารถเห็นได้อย่างถูกต้องโดยการรีสตาร์ท PM เท่านั้น และ VS.
Malik Khalil

10

ฉันเพิ่งมีปัญหานี้เหมือนกัน ฉันปิดและเปิด VS2015 และ "แก้ไข" ปัญหา ...


9

คุณต้องรู้ว่าEntity-Frameworkรุ่นของคุณคืออะไร หลังจากนั้นคุณต้องตรวจสอบproject.jsonและควบคุมส่วนเหล่านี้:

ในการพึ่งพา

ตรวจสอบ:

Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
},

ส่วนนี้:

"version": "1.0.0-preview2-final",

เกี่ยวข้องกับเวอร์ชันของคุณEntity-Frameworkและคุณต้องเปลี่ยนสิ่งนี้ด้วย

หลังจากนั้นส่วนที่สองของที่proj.jsonนี่ในToolsส่วนของJSONคุณมี:

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",

นอกจากนี้โค้ดส่วนนี้ยังเกี่ยวข้องกับEntity-Frameworkส่วนสุดท้ายของโค้ดในส่วนDependencies

หมายเหตุ:หลังจากทำปัญหานี้แล้วคุณควรปิดCMDและรีสตาร์ท Visual Studio




5

เพียงแค่ลองเริ่มต้น Microsoft.EntityFrameworkCore.Tools ใน PM ดำเนินการ

C:\Users\<username>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\1.0.0-preview2-final\tools\init.ps1.

มันช่วยฉันด้วยปัญหาเดียวกัน เวอร์ชันของเครื่องมืออาจแตกต่างกัน ขึ้นอยู่กับสิ่งที่คุณใช้ในโครงการของคุณ


1
สำหรับฉันฉันใช้เส้นทางสัมพัทธ์ \ package \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1 นี่เป็นเพราะไดเรกทอรีปัจจุบันของ PM เป็นไดเร็กทอรีโซลูชันอยู่แล้ว แต่สำหรับฉันแพ็คเกจ Tools เป็นส่วนหนึ่งของ วิธีการแก้. โดยส่วนตัวแล้วฉันคิดว่านี่เป็นทางออกที่ดีที่สุดเนื่องจากไม่มีการรีสตาร์ทแก้ไขติดตั้งใหม่ ใช้เวลาไม่นานและได้ผล
William Leader

4

ฉันพบปัญหาเดียวกัน โครงการส่วนใหญ่ของฉันมีเครื่องมือเหมือนกัน

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}

สิ่งนี้ใช้ได้ดีกับทุกโครงการยกเว้นโครงการเดียว ฉันเปลี่ยนรายการในเครื่องมือเป็น

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": {
    "version": "1.0.0-preview2-final",
    "type": "build"
  }
}

แล้วก็วิ่งdotnet restore. หลังจากการกู้คืนเสร็จสิ้นAdd-Migrationทำงานได้ตามปกติ


2

ฉันมีปัญหาเดียวกันและพบว่าเป็นปัญหาการกำหนดเวอร์ชันของ Visual Studio ในไฟล์โซลูชัน

ฉันกำหนดเป้าหมาย:

VisualStudioVersion = 14.0.25123.0

แต่ฉันต้องการกำหนดเป้าหมาย:

VisualStudioVersion = 14.0.25420.1

หลังจากทำการเปลี่ยนแปลงนั้นโดยตรงกับไฟล์โซลูชันแล้ว EF Core cmdlets ก็เริ่มทำงานในคอนโซลตัวจัดการแพ็คเกจ


ขอบคุณที่พยายามช่วย ฉันกำลังใช้เวอร์ชัน14.0.25421.03 Update 3ที่สูงกว่าที่คุณใช้อยู่
น้ำ

2

นี่คือขั้นตอนที่ฉันทำตามและแก้ไขปัญหาได้

1) อัปเกรด Power shell ของฉันจากเวอร์ชัน 2 เป็น 3

2) ปิด PM Console

3) รีสตาร์ท Visual Studio

4) รันคำสั่งด้านล่างใน PM Console dotnet restore

5) Add-Migration InitialMigration

ได้ผล !!!


1

ฉันมีปัญหานี้และไม่มีวิธีแก้ไขปัญหาก่อนหน้านี้ที่ช่วยฉันได้ ปัญหาของฉันเกิดจาก powershell เวอร์ชันเก่าบนเครื่อง Windows 7 ของฉัน - เมื่อฉันอัปเดตเป็น powershell 5 มันก็เริ่มทำงาน


1

ไปที่คอนโซลตัวจัดการแพ็คเกจ (ในสตูดิโอภาพ) และดำเนินการคำสั่งด้านล่าง

C:\Users\<YOUR_USER>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\<YOUR_INSTALLED_VERSION>\tools\init.ps1


0

ฉันคิดว่าคำตอบต้องการการอัปเดตในปี 2560 เนื่องจาก MS ได้ทำการเปลี่ยนแปลง (ทำลาย) บางอย่างซึ่งมีรายละเอียดที่นี่

https://github.com/aspnet/EntityFramework/issues/7053

เพื่อสรุปตอนนี้คุณจะต้องมีการอ้างอิงถึง EntityFrameWorkCore.Tools.DotNet ในส่วนเครื่องมือด้านล่าง

"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"

ฉันได้โพสต์ไฟล์ project.json ที่ใช้งานได้ด้านล่างในกรณีที่บางไฟล์มีปัญหา

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
    "Microsoft.Extensions.Configuration.Json": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

คุณอาจต้องรีสตาร์ท Visual Studio อีกครั้งเช่นกัน
Francis

0

ฉันลองทำทุกอย่างข้างต้นแล้วและไม่มีโชค ฉันดาวน์โหลดแพ็คเกจ. net core 2.0 ล่าสุดและเรียกใช้คำสั่งอีกครั้งและใช้งานได้


ตอนนี้. net core 2.0 เสถียรแล้วจึงสามารถอัพเกรดโปรเจ็กต์จาก1.1.1เป็น2.0?
นาม

1
.NET Core 2.0 พร้อมใช้งานเมื่อวานนี้ 14 สิงหาคม 2017 เป็นรุ่นสุดท้าย blogs.msdn.microsoft.com/dotnet/2017/08/14/…
Tyrone Moodley

0

ในกรณีของฉันฉันเพิ่มการพึ่งพาผ่าน Nuget:

Microsoft.EntityFrameworkCore.Tools

จากนั้นเรียกใช้ผ่าน Package Manager Console:

add-migration Initial -Context "ContextName" -StartupProject "EntryProject.Name" -Project "MigrationProject.Name"

0

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน: จาก Visual Studio คลิกที่

เครื่องมือ -> NuGet Package Manager -> Package Manager Console

ใส่คำอธิบายภาพที่นี่

จากนั้นคุณสามารถเรียกใช้Add-Migrationตัวอย่างเช่น:

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