6

मुझे लगता है कि मुझे मिल गया है 1.1 ठीक से चल मेरे सारे निर्भरता लेकिन जब मैं यहाँ https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/new-db चरणों का पालन करने की कोशिश मैं ऐड-प्रवासन आदेश चलाकर कोई त्रुटि मिलती है।एफई कोर WebAPI कोर करने के लिए 1.1 - ऐड-प्रवासन में विफल रहता है

PM> एड-प्रवासन InitialState

कोई त्रुटि स्टार्टअप वर्ग 'स्टार्टअप' पर विधि 'ConfigureServices' को कॉल करते समय उत्पन्न हुई।

Consider using IDbContextFactory to override the initialization of the DbContext at design-time. Error: This method could not find a user secret ID because the application’s entry assembly is not set. Try using the “.AddUserSecrets(Assembly assembly)” method instead. No parameterless constructor was found on ‘ApplicationDbContext’. Either add a parameterless constructor to ‘ApplicationDbContext’ or add an implementation of ‘IDbContextFactory’ in the same assembly as ‘ApplicationDbContext’.

मेरी project.json के प्रासंगिक अनुभाग: ...

“Microsoft.EntityFrameworkCore”: “1.1.0”, 
“Microsoft.EntityFrameworkCore.SqlServer”: “1.1.0”, 
“Microsoft.EntityFrameworkCore.Design”: { 
“type “: “build”, 
“version”: “1.1.0” 
}, 
“Microsoft.EntityFrameworkCore.Tools”: “1.1.0-preview4-final” 
}, 

“tools”: { 
“Microsoft.EntityFrameworkCore.Tools.DotNet”: “1.1.0-preview4-final” 
}, 

मेरे ApplicationDbContext निर्माता है:

public ApplicationDbContext(DbContextOptions options) : base(options) 
{ } 

और मेरे Startup.cs है :

services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”))); 

यह और क्या हो सकता है?

उत्तर

1

एक वैकल्पिक समाधान:

मैं एक ही समस्या में पड़ गए और यहां उतरना पड़ा। लेकिन मैं अलग-अलग लेख के साथ डॉटनेट कॉर वेब ऐप के साथ हर कदम पर इसकी तुलना करके स्क्रैच से एक ऐप लिख रहा हूं। जो वीएस 2017 में विज़ार्ड के माध्यम से नवीनतम प्रथाओं का पालन करने की उम्मीद कर रहा है। तो यह अजीब था जब सब कुछ मेरे कोड और जेनरेट कोड में समान था और मुझे यह अपवाद मिल रहा था। जेनरेट कोड में स्टार्टअप सीएस में माइकल डेनिस का सुझाया गया कोड नहीं था, जिसका मतलब यह नहीं है कि वह गलत है, इसका मतलब यह है कि अब एक अलग तरीका था। आगे डाइविंग पर मुझे पता चला कि उपयोगकर्ता गोपनीयता Id को मेरेप्रोजेक्टनाम में घोषित किया गया था।csproj निम्नानुसार है:

<PropertyGroup> 
    <UserSecretsId>aspnet-mywebproect-006a401f-2fdc-4aad-abb1-12c00000004a</UserSecretsId> 
</PropertyGroup> 

मेरी प्रोजेक्ट.csproj फ़ाइल में प्रविष्टि जोड़ने के बाद, समस्या हल हो गई थी।

+1

धन्यवाद हसन। हां मेरा उपरोक्त समाधान वीएस2015 के लिए था। मैंने हाल ही में अपनी परियोजना को वीएस2017 में अपग्रेड कर दिया है और इसे प्रोजेक्ट के बजाए सीएसपीआरजे में डाला है। जेसन अब काम कर रहा है ताकि आपको अब विशेषता की आवश्यकता न हो। –

1

आपका मुद्दा एफई कोर से संबंधित नहीं है, इसके बारे में User Secrets

अपने Startup.cs निर्माता की जाँच करें - यह AddUserSecrets() कॉल में शामिल है। आप इसे हटा सकते हैं। बाद में, जब आप उपयोगकर्ता रहस्यों के बारे में पढ़ते हैं, तो मुझे लगता है कि आप सही कॉन्फ़िगरेशन के साथ वापस जोड़ सकते हैं (मुझे लगता है कि आपके पास 1.0.0 से वेबसाइट टेम्पलेट है, जबकि लाइब्रेरी 1.1.0 का संदर्भ देता है - इसमें this bug fix)

+0

हां AddUserScrets() से संबंधित था। जब मैं उस पंक्ति पर टिप्पणी करता हूं तो मैं माइग्रेशन जोड़ सकता हूं। –

+0

आपके द्वारा प्रदत्त बग फिक्स लिंक समस्या को हल नहीं करता है, हालांकि। अगर मैं project.json अस्तित्व (नीचे) की जांच करता हूं तो माइग्रेशन अभी भी विफल रहता है। 'अगर (env.IsDevelopment() && builder.GetFileProvider()। GetFileInfo (" project.json ") मौजूद है) { बिल्डर। AddUserScrets(); } ' –

+0

हां, यह असफल हो जाएगा क्योंकि आप 'AddUserScrets' वापस कर रहे हैं :) आपको इसे ठीक से कॉन्फ़िगर करना चाहिए। Https://github.com/aspnet/Announcements/issues/209 देखें। – Dmitry

5

समस्या से संबंधित है builder.AddUserSecrets() कॉल। निम्न चरणों का पालन ठीक करने के लिए:

  1. उपयोगकर्ता गुप्त Startup.cs

  2. को विशेषता [assembly: UserSecretsId("aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed")] जोड़कर विधानसभा (बस project.json के बजाय) को जोड़ना स्टार्टअप में। सीएस साथ builder.AddUserSecrets<Startup>();

refe builder.AddUserSecrets() की जगह Rence: InvalidOperationException: Could not find 'UserSecretsIdAttribute' on assembly

+0

मैं जिस संस्करण का उपयोग कर रहा हूं, उसमें मैं केवल उपयोगकर्ता निर्माता स्ट्रिंग को 'builder.AddUserSecrets() 'पैरामीटर के रूप में पास कर सकता हूं। –

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