Ich habe Probleme beim Implementieren einer abstrakten generischen Basisklasse mit EF Core. Es ist wahrscheinlich etwas offensichtlich, aber ich sehe es nicht.Entwurf der abstrakten generischen DbContext Klasse in EF Core
Basisklasse:
public abstract class AContext<TUser> : IdentityDbContext<TUser>
where TUser : IdentityUser {
public AContext(DbContextOptions<AContext<TUser>> options, ILogger<AContext<TUser>> logger)
: base(options) {
}
}
Unterklasse:
public class Context : AContext<User> {
public Context(DbContextOptions<Context> options, ILogger<Context> logger)
: base(options, logger) { // problem is here with "options"
}
}
Fehler: Cannot convert from 'DbContextOptions<Context>' to 'DbContextOptions<AContext<User>>'
.
Ich versuchte Casting, aber das funktioniert nicht. Liegt das Problem daran, dass es nicht kovariant ist? Kann ich es irgendwie neu gestalten?
Dies funktioniert nicht - obwohl der ASP.NET Core DI-Container kompiliert, ist es nicht möglich, Instanzen des Kontexts zu erstellen. Ich schätze, weil es abstrakt ist. – grokky
Ja, das könnte der Fall sein. Aber das ist unabhängig von der Lösung. Machen Sie Ihre Klasse nicht abstrakt. – Sefe
@grokky: Dieses Problem ist ein anderes als Ihre Frage. Wenn beide Klassen abstrakt sind, wird es in beiden Fällen nicht funktionieren. Das ist eine andere Frage. – Sefe