I am working with a .Net WinForms Application that is being designed to collect records from MongoDB and insert records into a SQL Server database.
The error that I am getting below is flagged at Application.Run(...)
System.InvalidOperationException: 'Cannot resolve 'FixSqlChatHistory.WinForm.MongoReader' from root provider because it requires scoped service 'FixSqlChatHistory.DataContext.MongoToSqlContext'.'
The code I am working with is
static void Main()
{
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var host = CreateHostBuilder().Build();
ServiceProvider = host.Services;
Application.Run(ServiceProvider.GetRequiredService<MongoReader>());
}
public static IServiceProvider ServiceProvider { get; private set; }
static IHostBuilder CreateHostBuilder()
{
var assemblies = AppDomain.CurrentDomain.GetAssemblies()
.Where(x => x.GetName().Name.Contains("FixSqlHistory"));
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
return Host.CreateDefaultBuilder()
.ConfigureServices((context, services) => {
services.AddScoped<IMongoReader, MongoService>();
services.AddScoped<IChatActivityReader, ChatDataFixService>();
services.AddScoped<IChatActivityWriter, ChatDataFixService>();
services.AddAutoMapper(assemblies);
services.AddDbContext<MongoToSqlContext>(options => options.
UseSqlServer(Configuration.GetConnectionString("DefaultConnection")))
services.AddScoped<MongoReader>();
});
}
The MongoReader (Form) is constructed like this
public MongoReader(
MongoToSqlContext databaseContext,
IChatActivityReader chatActivityReader,
IChatActivityWriter chatActivityWriter,
IMongoReader mongoReader)
{
_databaseContext = databaseContext;
_chatActivityReader = chatActivityReader;
_chatActivityWriter = chatActivityWriter;
_mongoReader = mongoReader;
InitializeComponent();
}
Its been a long time since I created a WinForms Application, and the first time in .Net6 so would appreciate some assistance in where I have gone wrong.
I have looked here which appears to be a similar issue but I am setup with AddScoped as this post suggests
Cannot resolve 'ServiceBusConsumer' from root provider because it requires scoped service DbContext