Derzeit verwendet mein Projekt keine Schnittstelle für meinen Kontext. Ich füge es als Implementierung in meine Repository-Klassen ein. Und in meinem Startup.cs verwende ich Services.AddDbContext, um es einzurichten.
Beispiel für einen typischen Repository-Klassenkonstruktor.
Code: Select all
public CompaniesRepository(MyDbContext myDbContext)
{
_myDbContext = myDbContext;
}
Code: Select all
services.AddDbContext(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("MyDbConnectionString"),
sqlOptions =>
{
sqlOptions.EnableRetryOnFailure(5,TimeSpan.FromSeconds(30),sqlTransientErrors);
});
});
Jetzt versuche ich jedoch, sie einzurichten Unit-Tests und ich möchte in der Lage sein, meinen Kontext zu verspotten, also muss ich eine Schnittstelle dafür erstellen.
Also habe ich eine Schnittstelle zu MyDbContext namens IMyDbContext hinzugefügt und den folgenden Code zu meiner Startup.cs hinzugefügt, wobei ich den Empfehlungen gefolgt bin in diesem Blogbeitrag von Jerrie Pelser
Code: Select all
services.AddScoped(provider => provider.GetService());
Fehler CS1929 „IMyDbContext“ nicht enthält eine Definition für „BulkInsert“ und die beste Erweiterungsmethodenüberladung „DbContextBulkExtensions.BulkInsert(DbContext, IList, BulkConfig, Action)“ erfordert einen Empfänger vom Typ „DbContext“
Ich gehe davon aus, dass ich die BulkInsert-Erweiterungsmethode irgendwie zu meiner IMyDyBontext-Schnittstelle hinzufügen muss, bin mir aber nicht sicher, wie das geht mach das richtig. Wenn ich einfach versuche, die Methode zu meiner Schnittstelle hinzuzufügen, erhalte ich eine Fehlermeldung, die besagt, dass sie natürlich nicht in meiner MyDbContext-Klasse implementiert ist.
Wie verweise ich auf die BulkInsert-Erweiterungsmethode in meiner MyDbContext-Klasse?