Я пытаюсь создать WebAPI с ядром ASP.NET. Я создал Models и db Context, но Context не звонит из Program.cs. Хотя я добавляю его с помощью addDbContext. В другом проекте это работало, но не здесь.
Возможно, я не до конца понимаю, как работает DI и нужно сделать что-то еще/изменить в контексте или в параметрах/определении конструктора контекста
Программа.cs:
using FootballWebAPI.Models;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
string? ConnectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<FootballAPIContext>(options => options.UseSqlServer(ConnectionString));
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>endpoints.MapControllers());
app.UseAuthorization();
app.MapControllers();
app.Run();
И мой контекст:
using Microsoft.EntityFrameworkCore;
namespace FootballWebAPI.Models
{
public partial class FootballAPIContext:DbContext
{
public FootballAPIContext(DbContextOptions<FootballAPIContext> options)
: base(options)
{
Database.EnsureDeleted();
Database.EnsureCreated();
}
public DbSet<Match> Matches { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionBuilder)
{
if(!optionBuilder.IsConfigured)
optionBuilder.UseSqlServer("Server= DESKTOP-1GRC7IR\\SQLEXPRESS;Database=FootballAPI; Trusted_Connection=True;MultipleActiveResultSets=true;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Match>();
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}
}
Решение проблемы
Вы должны использовать миграции ef. Прочтите, например, эту статью: https://www.entityframeworktutorial.net/efcore/entity-framework-core-migration.aspx
- запустить консоль nuget
- введите add-migration init для вашего проекта с помощью FootballAPIContext
- Убедитесь, что новый класс миграции создан.
- Запустите приложение -> БД должна быть создана
Комментариев нет:
Отправить комментарий