首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提供迁移更新和删除时出错。但是加法有效吗?

提供迁移更新和删除时出错。但是加法有效吗?
EN

Stack Overflow用户
提问于 2022-11-18 12:07:38
回答 1查看 35关注 0票数 1

我正在一个关于.NET 6的udemy课程中做一个项目。无论如何,我想到的是,当我运行这个项目“迁移”时,添加所有的东西都是完美的。但是,在执行删除或数据库更新时,会出现以下异常。System.InvalidOperationException: The ConnectionString property has not been initialized.

都没起作用。我将离开GitHub和一些项目代码,以防有帮助。我还将使用-详细的迁移命令。GitHub项目。另一个细节是,我在同一次提交中下载了教授的项目,他的命令工作。我使用比较站点检查了所有内容,项目也是一样的。我还使用相同版本的依赖项进行了测试,但也没有使用。

使用 dotnet ef migrations remove --verbose的CLI

代码语言:javascript
复制
 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

代码语言:javascript
复制
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

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

Program.cs

代码语言:javascript
复制
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();

我已经更新了所有的项目依赖项,并遵循了我在这里找到的一些解决方案,比如和文档中的其他解决方案,比如

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-18 12:17:40

我查过你的github了你也这么做了

代码语言:javascript
复制
builder.Services.AddSqlServer<ApplicationDbContext>(builder.Configuration["ConnectionString:IWantDb"]);

但是连接字符串实际上有不同的路径。

代码语言:javascript
复制
"Database": {
          "IWantDb": "Server=localhost;Database=IWantDb;User Id=sa;Password=123456;MultipleActiveResultSets=true;Encrypt=YES;TrustServerCertificate=YES"
            },

您应该将ConnectionString:IWantDb更改为Database:IWantDb

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74489460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档