Ошибка при обновлении и удалении миграции. а надстройка работает?

Я делаю проект в курсе udemy о .NET 6. Во всяком случае, мне приходит в голову, что когда я запускаю проект «миграция добавить», все идет отлично. Однако при выполнении удаления или обновления базы данных появляется следующее исключение. System.InvalidOperationException: The ConnectionString property has not been initialized.

Ну ни один не работал. Я оставлю GitHub и некоторый код проекта на случай, если это поможет. Я также оставлю команду миграции, используя --verbose. Проект на GitHub. Еще одна деталь в том, что я скачал проект профессора в этом же коммите, и его команды работают. Проверил все через сайт сравнения, проект тот же. Я также тестировал с использованием тех же версий зависимостей, но тоже ничего.

CLI с использованием dotnet ef migrations remove --verbose

 EST\IWantApp\src" --verbose
    Using assembly 'IWantApp'.
    Using startup assembly 'IWantApp'.
    Using application base 'C:\Users\VOTOGAMES\OneDrive\Documentos\workspace\ws curso csharp API REST\IWantApp\src\bin\Debug\net6.0'.
    Using working directory 'C:\Users\VOTOGAMES\OneDrive\Documentos\workspace\ws curso csharp API REST\IWantApp\src'.
    Using root namespace 'IWantApp'.
    Using project directory 'C:\Users\VOTOGAMES\OneDrive\Documentos\workspace\ws curso csharp API REST\IWantApp\src\'.
    Remaining arguments: .
    Finding DbContext classes...
    Finding IDesignTimeDbContextFactory implementations...
    Finding application service provider in assembly 'IWantApp'...
    Finding Microsoft.Extensions.Hosting service provider...
    Using environment 'Development'.
    Using application service provider from Microsoft.Extensions.Hosting.
    Found DbContext 'ApplicationDbContext'.
    Finding DbContext classes in the project...
    Using context 'ApplicationDbContext'.
    Finding design-time services referenced by assembly 'IWantApp'...
    Finding design-time services referenced by assembly 'IWantApp'...
    No referenced design-time services were found.
    Finding design-time services for provider 'Microsoft.EntityFrameworkCore.SqlServer'...
    Using design-time services from provider 'Microsoft.EntityFrameworkCore.SqlServer'.
    Finding IDesignTimeServices implementations in assembly 'IWantApp'...
    No design-time services were found.
    System.InvalidOperationException: The ConnectionString property has not been initialized.
       at Microsoft.Data.SqlClient.SqlConnection.PermissionDemand()
       at Microsoft.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
       at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
       at Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
       at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry, SqlConnectionOverrides overrides)
       at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides)
       at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerConnection.OpenDbConnection(Boolean errorsExpected)
       at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected)
       at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
       at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass18_0.<Exists>b__0(DateTime giveUp)
       at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__DisplayClass12_0`2.<Execute>b__0(DbContext _, TState s)
       at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
       at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, TState state, Func`2 operation, Func`2 verifySucceeded)
       at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists(Boolean retryOnNotExists)
       at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists()
       at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
       at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations()
       at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.RemoveMigration(String projectDir, String rootNamespace, Boolean force, String language)
       at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.RemoveMigration(String contextType, Boolean force)
       at Microsoft.EntityFrameworkCore.Design.OperationExecutor.RemoveMigrationImpl(String contextType, Boolean force)
       at Microsoft.EntityFrameworkCore.Design.OperationExecutor.RemoveMigration.<>c__DisplayClass0_0.<.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)
    The ConnectionString property has not been initialized.

ApplicationDbContext

using IWantApp.Domain.Products;
    using Microsoft.EntityFrameworkCore;
    
    namespace IWantApp.Infra.Data;
    
    public class ApplicationDbContext : DbContext
    {
        public DbSet<Product> Products { get; set; }
        public DbSet<Category> Categories { get; set; }
    
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) 
        { 
    
        }
    
        protected override void OnModelCreating(ModelBuilder builder)
        {
            builder.Entity<Product>()
                .Property(p => p.Name).IsRequired();
            builder.Entity<Product>()
                .Property(p => p.Description).HasMaxLength(255);
            builder.Entity<Category>()
                .Property(c => c.Name).IsRequired();
        }
    
        protected override void ConfigureConventions(ModelConfigurationBuilder configuration)
        {
            configuration.Properties<string>()
                .HaveMaxLength(100);
        }
    
    
    }


Appsettings.Development.json

{
      
        "Database": {
          "IWantDb": "Server=localhost;Database=IWantDb;User Id=sa;Password=123456;MultipleActiveResultSets=true;Encrypt=YES;TrustServerCertificate=YES"
        },
    
        "Logging": {
          "LogLevel": {
            "Default": "Information",
            "Microsoft.AspNetCore": "Warning"
          }
        }
    }

Программа.cs

using IWantApp.Endpoints.Categories;
using IWantApp.Infra.Data;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSqlServer<ApplicationDbContext>(builder.Configuration["ConnectionString:IWantDb"]);

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.MapMethods(CategoryPost.Template, CategoryPost.Methods, CategoryPost.Handle);
app.MapMethods(CategoryGetAll.Template, CategoryGetAll.Methods, CategoryGetAll.Handle);
app.MapMethods(CategoryPut.Template, CategoryPut.Methods, CategoryPut.Handle);

app.Run();

Я уже обновил все зависимости проекта и следил за некоторыми решениями, которые я нашел здесь, такими как это , и другими решениями в документации, такими как это.

Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
1
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я проверил ваш гитхаб И ты делаешь это

builder.Services.AddSqlServer<ApplicationDbContext>(builder.Configuration["ConnectionString:IWantDb"]);

Но ваша строка подключения на самом деле имеет другой путь

"Database": {
          "IWantDb": "Server=localhost;Database=IWantDb;User Id=sa;Password=123456;MultipleActiveResultSets=true;Encrypt=YES;TrustServerCertificate=YES"
            },

Вы должны изменить ConnectionString:IWantDb на Database:IWantDb

Друг спасибо большое! Я не верю, что это было что-то ясное как белый день.

Jose Marcos 18.11.2022 22:51

Другие вопросы по теме