Je suis en train d'essayer de faire fonctionner une application Web .NET Core avec EF Core. Pour tester le dépôt, j'ai ajouté un MyDbContext
qui hérite du DbContext
d'EF et de l'interface IMyDbContext
.
public interface IMyDbContext
{
DbSet Models { get; set; }
}
public class MyDbContext : DbContext, IMyDbContext
{
public MyDbContext(DbContextOptions options) : base(options)
{
}
public virtual DbSet Models { get; set; }
}
L'interface du contexte est injectée dans mon dépôt générique :
public class GenericRepository : IGenericRepository
{
private readonly IMyDbContext _context = null;
public GenericRepository(IMyDbContext context)
{
this._context = context;
}
}
Quand j'utilise ce code (sans l'interface) dans startup.cs :
services.AddDbContext(options =>
options.UseSqlServer(...));
Je reçois une erreur d'exécution :
InvalidOperationException: Impossible de résoudre le service de type 'IMyDbContext' lors de la tentative d'activation de 'GenericRepository`1[MyModel]'
Et lorsque j'utilise cette ligne de code :
services.AddDbContext(options =>
options.UseSqlServer(...));
Je reçois ce code d'erreur de compilation :
Impossible de convertir l'expression lambda en type 'ServiceLifetime' car ce n'est pas un type de délégué
Ma question est comment configurer correctement le services.AddDbContext
de la méthode ConfigureServices
? (Y a-t-il des changements nécessaires à l'intérieur de la méthode Configure
?) Si nécessaire, je suis prêt à modifier l'IMyDbContext