@andrey71
админю и учу C#, ASP.NET Core

ASP.NET Core Что за ошибка при Add-Migration Initial?

Доброго времени суток, уважаемые знатоки.

Решил заняться изучением C# и ASP.NET Core и в ознакомительных целях стал делать урок.
Вот ссылка на него:
https://docs.microsoft.com/ru-ru/aspnet/core/tuto...
Все предыдущие шаги, естественно выполнены.
И застрял я на Add-Migration Initial

При вводе этой команды, получаю такую ошибку:
Type 'get-help NuGet' to see all available NuGet commands.

PM> Add-Migration Initial
Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\Андрей\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
System.ArgumentNullException: Value cannot be null.
Parameter name: connectionString
   at Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(String value, String parameterName)
   at Microsoft.EntityFrameworkCore.SqlServerDbContextOptionsExtensions.UseSqlServer(DbContextOptionsBuilder optionsBuilder, String connectionString, Action`1 sqlServerOptionsAction)
   at RazorPagesMovie.Startup.<>c__DisplayClass4_0.<ConfigureServices>b__0(DbContextOptionsBuilder options) in C:\Users\Андрей\Documents\MEGAsync\CSharp\source\repos\RazorPagesMovie\RazorPagesMovie\Startup.cs:line 28
   at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c__DisplayClass0_0`1.<AddDbContext>b__0(IServiceProvider p, DbContextOptionsBuilder b)
   at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.DbContextOptionsFactory[TContext](IServiceProvider applicationServiceProvider, Action`2 optionsAction)
   at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c__DisplayClass5_0`1.<AddCoreServices>b__0(IServiceProvider p)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass22_0.<RealizeService>b__0(ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c__5`1.<AddCoreServices>b__5_1(IServiceProvider p)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitIEnumerable(IEnumerableCallSite enumerableCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass22_0.<RealizeService>b__0(ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetServices[T](IServiceProvider provider)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.FindContextTypes()
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.FindContextType(String name)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_1.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Value cannot be null.
Parameter name: connectionString
PM>


Спасите!

Встречал похожую проблему на просторах интернета, но решения какого-то конкретного не нашел.
Скачал с гитхаба этот же урок, он заработал без проблем.

В чем же проблема?
  • Вопрос задан
  • 2576 просмотров
Решения вопроса 1
yarosroman
@yarosroman
C# the best
Ругается но то, что не задана строка connectionString в appsettings.json
{
 "Data": {
  	"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=clothapp;Trusted_Connection=True;"
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Weldervan
Чтобы выявить проблему, попробуйте несколько простых шагов:
1)
appsettings.json
{
"ConnectionStrings": {
    "MovieContext": "Server=(localdb)\\mssqllocaldb;Database=Movie-1;Trusted_Connection=True;"
  }
}

startup.cs
services.AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));


Если не помогло, попробуйте без метода расширения подключить:
2)
services.AddDbContext<MovieContext>(options =>
            options.UseSqlServer(Configuration["ConnectionStrings:MovieContext"]));

Если в этот раз выдает ошибку, но другого характера - например"Object reference not set to an instance of an object",
значит у вас в классе startup.cs определено несколько конструктов, удалите все конструкторы кроме конструктора с IConfiguration интерфейса.
Если не помогло, то передайте строку подключения непосредственно в:
services.AddDbContext<AppIdentityDbContext>(options =>
            options.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=clothapp;Trusted_Connection=True;"));

Дело в том, что NullException необязательно может относиться к строке подключения, или к файлу appsettings.json и т.д..., не был создан объект в следствии этого null..
смотрите не из-за чего это произошло, а почему это произошло
Вы используете статические методы и конструктор никогда не вызывается, объект не создается,
Конструктор вызывается, но не с теми параметрами(как вариант реализация конструктора по умолчанию в классе,перед реализацией конструктора с параметрами),
ошибка в названии строки вместо MovieContext прописано например MoveContext ,
ошибка в названии файла вместо appsettings.json прописано например appsetings.json,
ошибка в самом файле appsettings.json вместо "ConnectionStrings": {"MovieContext": .....,
прописано например "ConnectionString": { "MovieContext": ....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Монополия Санкт-Петербург
от 87 000 до 87 000 ₽
Enqo Москва
от 200 000 ₽
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект