В настоящее время мой проект не использует интерфейс для моего контекста. Я внедряю его в классы своего репозитория как его реализацию. А в моем Startup.cs я использую Services.AddDbContext для его настройки.
Пример типичного конструктора класса репозитория.
Код: Выделить всё
public CompaniesRepository(MyDbContext myDbContext)
{
_myDbContext = myDbContext;
}
Код: Выделить всё
services.AddDbContext(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("MyDbConnectionString"),
sqlOptions =>
{
sqlOptions.EnableRetryOnFailure(5,TimeSpan.FromSeconds(30),sqlTransientErrors);
});
});
Однако сейчас я пытаюсь настроить модульные тесты, и я хочу иметь возможность имитировать мой контекст, поэтому мне нужно создать для него интерфейс.
Итак, я добавил интерфейс в MyDbContext под названием IMyDbContext и добавил следующий код в свой Startup.cs, следуя рекомендациям в этом сообщении блога Джерри Пелсера
Код: Выделить всё
services.AddScoped(provider => provider.GetService());
Ошибка CS1929 «IMyDbContext» не содержит определения BulkInsert, а для лучшей перегрузки метода расширения "DbContextBulkExtensions.BulkInsert(DbContext, IList, BulkConfig, Action)" требуется получатель типа "DbContext"
Я предполагаю, что мне нужно добавить метод расширения BulkInsert в мой интерфейс IMyDyBontext как-то, но я не уверен, как это сделать правильно. Если я просто попытаюсь добавить этот метод в свой интерфейс, то, конечно же, получу сообщение об ошибке, сообщающее, что он не реализован в моем классе MyDbContext.
Как мне ссылаться на метод расширения BulkInsert в моем классе MyDbContext?
Подробнее здесь: https://stackoverflow.com/questions/503 ... extensions
Мобильная версия