Ich versuche, CA in einer einfachen ASP.NET Core-Web-API zu implementieren. Im Moment habe ich .Presentation, .Infrastructure und .Application alle eingerichtet.
Aber als ich versuchte, die Datenbank mit den DbContext-Entitäten zu aktualisieren, die ich eingerichtet hatte … wurde ich zuerst mit … konfrontiert Dieser Fehler:
Es konnte kein „DbContext“ vom Typ „AppDbContext“ erstellt werden. Die Ausnahme
'Die Methode oder Operation ist nicht implementiert.' wurde beim
Versuch, eine Instanz zu erstellen, ausgelöst. Informationen zu den verschiedenen zur Entwurfszeit unterstützten Mustern finden Sie unter https://go.microsoft.com/fwlink/?linkid=851728
Nachher Nach einigen Recherchen wurde mir klar, dass dies daran lag, dass ich in meiner .Presentation-Ebene tatsächlich den AppDbContext innerhalb der .Infrastructure-Ebene konfigurierte und referenzierte.
Es war nicht genug, ich musste es über a initialisieren ContextFactory.
Nach etwas mehr Recherche habe ich ein ContextFactory-Modell im Ultimate Asp.Net Core-Buch gefunden.
Code: Select all
public class AppContextFactory : IDesignTimeDbContextFactory
{
public AppDbContext CreateDbContext(string[] args)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var builder = new DbContextOptionsBuilder()
.UseSqlServer(configuration.GetConnectionString("Default"),
b => b.MigrationsAssembly("Clean.Presentation"));
return new AppDbContext(builder.Options);
}
}
Ja Ich lerne immer noch etwas über diese Muster und Technologien, daher bin ich mir nicht sicher, wohin ich als nächstes gehen soll.
Dies sind alle relevanten Teile:
Dies ist mein AppDbContext innerhalb meiner Infrastrukturschicht:
Code: Select all
public AppDbContext(DbContextOptions options) : base(options) { }
protected override void OnModelCreating(ModelBuilder builder)
{
builder.ApplyConfiguration(new PersonaConfiguration());
//Initial Seeder
......
base.OnModelCreating(builder);
}
public DbSet Usuarios { get; set; } = null!;
public DbSet Cargos { get; set; } = null!;
public DbSet CargoAsignados { get; set; } = null!;
public DbSet
Personas { get; set; } = null!;
}
Dies ist die Konfiguration innerhalb meiner Service-Erweiterungen in meiner .Presentation-Ebene:
Code: Select all
public static void ConfigureDbContext(this IServiceCollection services, IConfiguration config)
{
services.AddDbContext(options =>
{
options.UseSqlServer(config.GetConnectionString("Default"));
});
}
Code: Select all
builder.Services.ConfigureDbContext(builder.Configuration);
Ich bin noch ziemlich neu in ASP.NET Core und CA. Wir freuen uns daher über jedes Feedback oder jede Anleitung zur Implementierung oder zur Zertifizierungsstelle im Allgemeinen!
Vielen Dank für Ihre Zeit!