शब्द 'मचान-डीबॉन्क्स्ट' को एक cmdlet, फ़ंक्शन, स्क्रिप्ट फ़ाइल या ऑपरेबल प्रोग्राम के नाम के रूप में मान्यता नहीं दी गई है


88

जब asp.net कोर इस आदेश के साथ पाड़ करने की कोशिश कर रहा है

पाड़- dbcontext "डेटा स्रोत = (स्थानीय); प्रारंभिक कैटलॉग = MyDb; एकीकृत सुरक्षा = सत्य;" Microsoft.EntityFrameworkCore.sqlserver -outputdir मॉडल

यह त्रुटि देता है।

scaffold-dbcontext: 'scaffold-dbcontext' शब्द को cmdlet, function, script फ़ाइल या ऑपरेबल प्रोग्राम के नाम से नहीं पहचाना जाता है। नाम की वर्तनी की जाँच करें, या यदि कोई पथ शामिल किया गया था, तो सत्यापित करें कि पथ सही है और पुन: प्रयास करें। लाइन में: 1 char: 1 + scaffold-dbcontext "डेटा स्रोत = (स्थानीय); प्रारंभिक कैटलॉग = MyDB; में ... + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (scaffold-dbcontext: String) [], CommandNotFoundException + FullQualifiedErrorId: CommandNotFoundException

मैंने यहां समाधान की कोशिश की है , लेकिन यह मेरे लिए काम नहीं करता है।

किसी भी विचार क्या कारण / इलाज हो सकता है?


सुनिश्चित करें कि आपके प्रोजेक्ट.json के टूल सेक्शन में Unitframework.tools है।
टिम स्क्रीव

जवाबों:


216

मेरे लिए जाहिरा तौर पर यह काम किया एक बार मैं भी पैकेज प्रबंधक कंसोल में भाग लिया है:

 Install-Package Microsoft.EntityFrameworkCore.Tools 

यह भी सुनिश्चित करें:

  • अन्य निर्भरताएँ (उदाहरण के लिए Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.SqlServer, Microsoft.EntityFrameworkCore.SqlServer.Design ... आपकी आवश्यकताओं के आधार पर संदर्भित।

  • PM कंसोल के शीर्ष-दाएं कोने में अपने आदेशों के लिए लक्ष्य के रूप में सही असेंबली का चयन करने के लिए (मुझे इसे भूलकर अक्सर बेवकूफ बनाया जाता है ...)

एक और समस्या जिसका मुझे सामना करना पड़ा: एक अलग वर्ग के पुस्तकालय में स्थित dbcontext के साथ, मैं निम्नलिखित त्रुटि का सामना कर रहा था:

Microsoft.EntityFrameworkCore.SqlServer नाम के साथ प्रदाता असेंबली खोजने में असमर्थ। सुनिश्चित करें कि निर्दिष्ट नाम सही है और परियोजना द्वारा संदर्भित है।

जिसे मैं वीएस में स्टार्टअप प्रोजेक्ट के रूप में अपनी कक्षा की लाइब्रेरी सेट करके ठीक करने में सक्षम था (यह मत पूछो कि यह अर्थहीन क्यों लगता है, लेकिन यह काम किया)।

लेट एडिट, जानने के लिए कुछ और है: आप केवल .Net मानक को लक्षित करने वाले क्लास लाइब्रेरी के खिलाफ स्कैफोल्ड-डीबोनटेक्स्ट नहीं चला सकते हैं, आपको इसमें नेटकोरैप को भी सक्षम करना होगा, या स्कैफोल्ड-डीबीसी कॉंटेक्ट को शिकायत होगी। दोनों लक्ष्यों का समर्थन करने के लिए, इसे रखने के लिए csproj को संपादित करें: अनुभाग के <TargetFrameworks>netcoreapp2.2;netstandard2.0</TargetFrameworks> बजाय <TargetFramework>

इन सब के बाद आप Scaffold-DbContextउचित तर्क और कनेक्शन स्ट्रिंग के साथ अपनी कमांड लाइन चला पाएंगे ।


2
इसके लिए धन्यवाद। आपका समाधान अभी भी VS2019 के लिए काम करता है। नेट कोर 2.2 का उपयोग करते हुए
पॉल

बहुत बुरा माइक्रोसॉफ्ट ने इन पिछले महीनों के दौरान इसमें सुधार नहीं किया। मैं अपने उत्तर की इतनी उपयोगी होने की उम्मीद नहीं कर रहा था और जब तक इसका कुछ हिस्सा कुछ अजीब आईडीई व्यवहार के लिए एक मुश्किल काम हो गया लगता है ...
AFract

मैं त्रुटि में भाग गया: Microsoft नाम के साथ प्रदाता असेंबली खोजने में असमर्थ। EntityFrameworkCore.SqlServer। सुनिश्चित करें कि निर्दिष्ट नाम सही है और परियोजना द्वारा संदर्भित है। मुझे भी दौड़ना था: Install-Package Microsoft.EntityFrameworkCore.SqlServer
अहमद फैजान

@AhmedFaizan वास्तव में यह पोस्ट में उल्लिखित संकुल के उदाहरणों में से एक है। खुशी है कि यह मददगार था
AFract

1
NET कोर 3.1 द्वारा आवश्यक है, लेकिन mysql आधिकारिक दस्तावेज द्वारा नहीं, यह mysql EF कोर के साथ पहले mysql डेटाबेस को मचान करने के लिए स्थापित किया जाना चाहिए। निश्चित रूप से धन्यवाद।
लिएंड्रो

16
  1. सुनिश्चित करें कि यह आपके प्रोजेक्ट में उपलब्ध है। Json फ़ाइल "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final"।

यहां छवि विवरण दर्ज करें

  1. पैकेज मैनेजर कंसोल में कमांड चलाएँ

यहां छवि विवरण दर्ज करें

यह सब काम करेगा


9
वास्तव में मैं इसे nuget पैकेज स्थापित करके ठीक करता हूं: Install-Package Microsoft.EntityFrameworkCore.Tools
kepung

@kepung - हाल ही में VS2017 अपडेट के बाद मुझे ऐसा करना पड़ा। अजीब। आपकी टिप्पणी के लिए धन्यवाद क्योंकि इसने मेरे लिए समस्या का समाधान किया।
KSwift87

10

सुनिश्चित करें कि आपने VS को प्रशासक के रूप में चलाया है और निम्नलिखित पैकेज स्थापित किए हैं:

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

1
मेरी इसी तरह की समस्या के लिए, मुझे Microsoft.EntityFrameworkCore.SqlServer.Design को स्थापित करने की आवश्यकता नहीं थी और मैंने बाकी की स्थापना की और यह सही तरीके से चलता है।
मीनाएमआरएम

@MinaMRM धन्यवाद इसने काम कर दिया!!
द गॉडफादर

9

एक ही समस्या थी। मेरे मामले में मुझे कुछ निर्भरताएँ याद आ रही थीं, इसलिए सुनिश्चित करें कि आपके पास निम्नलिखित हैं:

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Tools

यहां छवि विवरण दर्ज करें

आशा है कि यह मदद करेगा। :)


मेरे पास उन सभी में से 3 हैं, लेकिन मुझे अभी भी पता चल रहा है कि "Scafford-DbContext को मान्यता नहीं है" त्रुटि। मैंने Microsoft.EntityFrameworkCore.SqlServer.Design को जोड़ने का प्रयास किया, लेकिन इससे कोई मदद नहीं मिली।
रॉड

1

यदि आप .netCore 2.2 का उपयोग कर रहे हैं, तो नीचे दिया गया कमांड मेरे लिए आकर्षण की तरह काम करता है या कमांड प्रॉम्प्ट या गिट बैश। सुनिश्चित करें कि आप कमांड चलाने से पहले प्रोजेक्ट फ़ोल्डर पर सीधे हैं।

उदाहरण के लिए C: \ App \ ProjectName:

 dotnet ef dbcontext scaffold "Server=.\;Database=Databasename;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Model

1

मैंने NuGet पैकेज मैनेजर से Microsoft.EntityFrameworkCore.Tools स्थापित किया था और यह स्थापित पैकेजों में दिखाई दे रहा था। लेकिन मुझे यह त्रुटि मिलती रही।

विज़ुअल स्टूडियो (2019 / संस्करण 16.4.4) को पुनः आरंभ करना मेरे लिए इसे तय कर दिया।


1

Scaffoldकमांड dbcontextEF में कमांड का हिस्सा है । नीचे सफल के लिए विवरण हैं scaffold:

यहां छवि विवरण दर्ज करें

पैकेज संदर्भ आवश्यक:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0"/>

तो हमारे पाड़ कमांड की तरह दिखना चाहिए:

dotnet ef dbcontext scaffold "Server=localhost\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o OutputDirectory

आपका Serverमान आपके डीबी सर्वर नाम के अनुसार भिन्न हो सकता है। MyDatabaseअपने डेटाबेस के नाम के साथ बदलें masterऔर OutputDirectoryउस स्थान पर जहां आप अपने नए बनाए गए स्कैफ़ोल्ड क्लासेस जैसे Modelsफ़ोल्डर चाहते हैं ।


1

सुनिश्चित करें कि आप सही कंसोल का उपयोग कर रहे हैं, "पैकेज मैनेजर कंसोल"। एक "टर्मिनल" कंसोल भी है जो बहुत समान दिखता है, लेकिन इस कमांड के लिए काम नहीं करता है। पैकेज मैनेजर कंसोल को व्यू -> अन्य विंडोज (विजुअल स्टूडियो 2019 के अनुसार, 16.6.5) में पाया जा सकता है।


-1

मैं हाल ही में इस त्रुटि के एक अन्य कारण में भाग गया: NuGet स्वयं पुराना था।

नुगेट को अद्यतन करने से समस्या हल हो गई।

यदि देवनाथन का उत्तर आपके लिए काम नहीं करता है, तो सुनिश्चित करें कि NuGet स्वयं अद्यतित है।


-2

मेरे लिए ... जब Microsoft डॉक्स से कमांड को कॉपी करते हैं, तो किसी कारण से हाइफ़न के आसपास अतिरिक्त रिक्ति जोड़ी गई थी।

तय किए गए हाइफ़न को हटाकर:

गलत:

Scaffold - DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer - OutputDir Models

अच्छा:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

डॉक्स यह भी कहता है यदि आपको यह त्रुटि मिलती है, तो Visual Studio को पुनरारंभ करने का प्रयास करें।

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.