2017-08-25 14 views
6

के दौरान ASPNETCORE_ENVIRONMENT का उपयोग नहीं करते हैं, मैं एक निश्चित माइग्रेशन के साथ अपने सभी वातावरण को अद्यतन करने के लिए दृश्य स्टूडियो का उपयोग करता हूं। यह नीचे दिए गए आदेश का उपयोग कर ठीक काम किया था।ef कोर अद्यतन-डेटाबेस

update-database -Migration initMigrationProduct -c ProductContext -Environment Production 

ef core 2.0 में यह आदेश बदल दिया गया है और पैरामीटर-पर्यावरण को हटा दिया गया है। दस्तावेज़ों में यह कहा।

"2.0 के साथ, आप के बजाय ASPNETCORE_ENVIRONMENT वातावरण चर उपयोग कर सकते हैं।"

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

मैं अब तरीकों में से सभी प्रकार पर की कोशिश की है, लेकिन यह ASPNETCORE_ENVIRONMENT चर का उपयोग नहीं है जब मैं एफई कोर 2.0 के साथ update-database चलाते हैं। मैंने रजिस्ट्री, एप्लिकेशन गुणों में सेट करने की कोशिश की।

कृपया मुझे बताएं कि मुझे अलग वातावरण अपडेट करने के साथ काम करने के लिए क्या करना है?

यदि मैं अलग-अलग लंचसेटिंग के साथ एप्लिकेशन शुरू करता हूं तो यह काम करता है लेकिन पैकेज प्रबंधक कंसोल का उपयोग नहीं करता है।

+0

कमांड निष्पादित करने से पहले 'ASPNETCORE_ENVIRONMENT = EnvironmentName' सेट करने का प्रयास करें। –

+0

क्या आप पावरशेल प्रॉम्प्ट का उपयोग कर रहे हैं? आपको '$ env: ASPNETCORE_ENVIRONMENT = 'EnvironmentName' – bricelam

+0

का उपयोग करने की आवश्यकता होगी, मैंने कोशिश की, मैंने दृश्य स्टूडियो में पीएस कंसोल में ASPNETCORE_ENVIRONMENT = उत्पादन सेट किया है, लेकिन यह पर्यावरण का उपयोग नहीं करता है, यह केवल डिफ़ॉल्ट विकास का उपयोग करता है। – joakimja

उत्तर

1

विजुअल स्टूडियो में पैकेज मैनेजर का उपयोग करना मेरे लिए एक मृत अंत था। समाधान
1. समाधान में स्टार्टर प्रोजेक्ट में .csproj में नीचे जोड़ें।
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> </ItemGroup>


2. ओपन आदेश उपकरण (cmd) और शुरू परियोजना स्थित हैं (डिफ़ॉल्ट परियोजना) के लिए .csproj को उसी फ़ोल्डर जाना।
3. आदेश चलाएं क्योंकि एंटोन टोशिक ने set ASPNETCORE_ENVIRONMENT=Production
4. फिर आदेश dotnet ef database update initMigrationProduct -c ProductContext चलाएं और अब यह काम करता है।
रिमर्क! इस आदेश में database और update पिछले संस्करणों के बाद से स्थान बदल गया है। और माइग्रेशन के लिए कोई तर्क/कोड नहीं है।
दस्तावेज़ इस स्पष्टीकरण के बाद और अधिक समझाते हैं।
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

+0

जब मैंने सबकुछ कोर 2.0 में अपग्रेड किया तो मैंने इसी समस्या में भाग लिया। @bricelam प्रतिक्रिया मेरे लिए काम करती है (भले ही मैं पुराने तरीके को पसंद करता हूं) और मैंने यह वही मुद्दा पोस्ट किया और यहां प्रतिक्रिया दी: https://github.com/aspnet/EntityFrameworkCore/issues/9664 –

+0

"विकास" वातावरण के लिए ऐसा करने का प्रयास । मैंने एक ही समस्या को मारा है लेकिन मैं इसे उपर्युक्त समाधान के साथ काम नहीं कर सकता। मेरे पास appsettings.json है, और appsettings.development.json (प्रत्येक एक अलग डीबी कनेक्शन स्ट्रिंग के साथ)।उपर्युक्त दृष्टिकोण काम नहीं करता है, या तो cmd या पैकेज प्रबंधक में। एप में दोनों वातावरण में कॉन्फ़िगर सही ढंग से उठाया जाता है। किसी अंतर्दृष्टि से प्यार होगा! – BenjiFB

+0

क्या होता है यह है कि ef ASPNETCORE_ENVIRONMENT सेटिंग से पर्यावरण को पढ़ता है। Cmd में अद्यतन-डेटाबेस चलाने से पहले जांचें कि "echo% ASPNETCORE_ENVIRONMENT%" के साथ आपका क्या इंगित करता है। और गहराई के रूप में अपनी startup.cs और पंक्ति की जांच करें। .AddJsonFile ($ "appsettings। {Env.EnvironmentName} .json", वैकल्पिक: सत्य) – joakimja

3

पैकेज प्रबंधक कंसोल (पीएमसी) में ASPNETCORE_ENVIRONMENT चर सेट करने के लिए, दृश्य स्टूडियो के अंदर, उत्पादन करने के लिए इस आदेश का पहली बार उपयोग

$env:ASPNETCORE_ENVIRONMENT='Production' 

तो फिर तुम

Update-Database 

सामान्य रूप से उपयोग कर सकते हैं।

+0

धन्यवाद! यह मेरे लिए काम किया। – maxwell

संबंधित मुद्दे