我正在尝试使用实体核心框架工作创建数据库表 dotnet ef 迁移添加 init --verbose 和 dotnet ef 数据库更新 但是当我尝试更新表时出现错误“无法创建类型为‘ApplicationDbContext’的对象。有关设计时支持的不同模式,请参阅https://go.microsoft.com/fwlink /?linkid=851728"
ApplicationDbContext
using System;
using System.Collections.Generic;
using Audit.Service.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace Audit.Service.Infrastructure.Repositories
{
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions options) : base(options) { }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql("Server = localhost; Port = 5432; User Id = postgres; Password =; Database = AuditHistory; ");
}
public DbSet<AuditHistory> Audits => Set<AuditHistory>();
}
}
我也试过如下。对于这种方法,我也遇到了错误
程序.cs
builder.Services.AddDbContext<ApplicationDbContext>(o => o.UseNpgsql(builder.Configuration.GetConnectionString("auditDb"), options => options.EnableRetryOnFailure()))
ApplicationDbcontext
public class ApplicationDbContext : DbContext
{
protected readonly IConfiguration Configuration;
public ApplicationDbContext()
{
}
public ApplicationDbContext(IConfiguration configuration)
{
Configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseNpgsql(Configuration.GetConnectionString("auditDb"));
}
public DbSet<AuditHistory> Audits { get; set; }
}
}
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"auditDb":"Server=localhost;Port=5432;User Id=postgres;Password=;Database=AuditHistory;"
}
}
错误
System.ArgumentException: Host can't be null
at Npgsql.NpgsqlConnectionStringBuilder.PostProcessAndValidate()
at Npgsql.NpgsqlConnection.SetupDataSource()
at Npgsql.NpgsqlConnection.set_ConnectionString(String value)
at Npgsql.NpgsqlConnection..ctor(String connectionString)
at Npgsql.NpgsqlConnection.CloneWith(String connectionString)
at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlRelationalConnection.CloneWith(String connectionString)
at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists(Boolean async, CancellationToken cancellationToken)
at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Host can't be null
我的实体框架工具版本是“7.0.2”,比运行时“7.0.3”旧。我更新了最新的工具。然后就修好了