Невозможно создать «DbContext» типа «AppDbContext». Исключение «Ссылка на объект не установлена на экземпляр объекта». был выброшен при попытке создать экземпляр. Сведения о различных шаблонах, поддерживаемых во время разработки, см. в статье https://go.microsoft.com/fwlink/?linkid=851728
в моем проекте ASP.NET Core Web API. Я пытался исправить эту ошибку на прошлой неделе, но не смог ее решить.
Я думаю, что весь написанный мной код верен, но эта ошибка все равно возникает. Каждый искусственный интеллект, который я использовал, предлагал мне создать фабрику времени разработки, но результат все тот же: я получаю эту ошибку.
Вот мой код — AppDBContext:
using Domain.Entites;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using System.Reflection;
namespace Persistence.Context;
public class AppDbContext : IdentityDbContext
{
public AppDbContext(DbContextOptions options) : base(options)
{
}
public DbSet Hotels { get; set; }
public DbSet Rooms { get; set; }
public DbSet RoomTypes { get; set; }
public DbSet Reservations { get; set; }
public DbSet Payments { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());
}
}
Program.cs:
using Application;
using Domain.Entites;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Persistence;
using Persistence.Context;
var builder = WebApplication.CreateBuilder(args);
var connString = builder.Configuration.GetConnectionString("DBConn");
Console.WriteLine($"
// Add services to the container.
builder.Services.AddPersistenceServices(builder.Configuration);
builder.Services.AddAppServices();
builder.Services.AddControllers();
builder.Services.AddIdentity(opt =>
{
opt.Password.RequiredUniqueChars = 1;
opt.Password.RequireDigit = true;
opt.Password.RequiredLength = 16;
opt.Password.RequireLowercase = true;
opt.Password.RequireUppercase = true;
opt.Password.RequireNonAlphanumeric = true;
opt.User.RequireUniqueEmail = true;
opt.SignIn.RequireConfirmedEmail = true;
})
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
//builder.Services.AddDataProtection();
builder.Services.AddOpenApi();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
//using(var servicescope = app.Services.CreateScope())
//{
// var services = servicescope.ServiceProvider;
// var dbcontext = services.GetRequiredService();
// dbcontext.Database.EnsureCreated();
// var rolmanager = services.GetRequiredService();
// async Task CreateRoleIfNotExists(string roleName)
// {
// if (!await rolmanager.RoleExistsAsync(roleName))
// {
// await rolmanager.CreateAsync(new Role
// {
// Id = Ulid.NewUlid().ToString(),
// Name = roleName,
// CreatedTime = DateTime.Now
// });
// }
// }
// await CreateRoleIfNotExists(Role.Administrator);
// await CreateRoleIfNotExists(Role.Owner);
// await CreateRoleIfNotExists(Role.Customer);
//}
app.MapControllers();
app.Run();
Подробнее здесь: https://stackoverflow.com/questions/798 ... object-ref
Мобильная версия