Я пытаюсь запустить веб-приложение .NET Core с EF Core. Чтобы протестировать репозиторий, я добавил MyDbContext
, который наследует EF DbContext
и интерфейс IMyDbContext
.
public interface ICalendarDbContext
{
DbSet<MyModel> Models { get; set; }
}
public class MyDbContext : DbContext, IMyDbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
{
}
public virtual DbSet<MyModel> Models { get; set; }
}
Контекстный интерфейс добавлен в мой общий репозиторий:
public class GenericRepository<TEntity> : IGenericRepository<TEntity>
{
private readonly IMyDbContext _context = null;
public GenericRepository(IMyDbContext context)
{
this._context = context;
}
}
Когда я использую этот код (без интерфейса) в файле startup.cs:
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(...));
Я получаю ошибку во время выполнения:
InvalidOperationException: невозможно разрешить службу для типа
'IMyDbContext' при попытке активировать 'GenericRepository`1 [MyModel]'
А при использовании этой строки кода:
services.AddDbContext<IMyDbContext>(options =>
options.UseSqlServer(...));
Я получаю код ошибки скомпилированного времени:
Невозможно преобразовать лямбда-выражение в тип 'ServiceLifetime', поскольку оно
не тип делегата
У меня вопрос, как правильно настроить метод services.AddDbContext
из ConfigureServices
?
(Есть ли какие-либо изменения, необходимые внутри метода Configure
?)
При необходимости я готов изменить IMyDbContext