首页 新闻 会员 周边 捐助

.NET 8 升级到 .NET 9 后遇到的移除 DbContext 注册的问题

0
悬赏园豆:30 [已解决问题] 解决于 2025-08-18 11:21

下面的集成测试中用到的 BlogSiteWebApplicationFactory 在 .NET 8 中正常

public class BlogSiteWebApplicationFactory : WebApplicationFactory<Program>
{
    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        builder.ConfigureServices(
            services =>
            {
                var efDescriptor =
                    services.Single(d => d.ServiceType == typeof(DbContextOptions<BlogSiteDbContext>));
                services.Remove(efDescriptor);

                var connection = new SqliteConnection("Filename=:memory:;Foreign Keys=False");
                connection.Open();
                services.AddDbContextPool<BlogSiteDbContext>(options => options.UseSqlite(connection));
            });
    }
}

升级到 .NET 9 后出现下面的错误

System.InvalidOperationException : Services for database providers 'Microsoft.EntityFrameworkCore.SqlServer', 'Microsoft.EntityFrameworkCore.Sqlite' have been registered in the service provider. Only a single database provider can be registered in a service provider. If possible, ensure that Entity Framework is managing its service provider by removing the call to 'UseInternalServiceProvider'. Otherwise, consider conditionally registering the database provider, or maintaining one service provider per database provider.

BlogSiteDbContext 的注册没有被成功移除

dudu的主页 dudu | 高人七级 | 园豆:24593
提问于:2025-08-18 10:57
< >
分享
最佳答案
0

DbContextOptions 改成 IDbContextOptionsConfiguration 解决了

dudu | 高人七级 |园豆:24593 | 2025-08-18 11:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册