C# EF Core encurecreated()只创建第一个DbContext

C# EF Core encurecreated()只创建第一个DbContext,c#,sql-server,entity-framework-core,C#,Sql Server,Entity Framework Core,我遇到了一个有趣的问题:两个EnsureCreated()调用只创建第一个DbContext 这个问题只发生在我的测试中,因为我的默认数据库是通过迁移完成的 公共类CustomWebApplicationFactory:WebApplicationFactory,其中TStartup:class { 受保护的覆盖无效配置WebHost(IWebHostBuilder) { builder.ConfigureServices(服务=> { var sp=services.BuildServiceP

我遇到了一个有趣的问题:两个
EnsureCreated()
调用只创建第一个
DbContext

这个问题只发生在我的测试中,因为我的默认数据库是通过迁移完成的

公共类CustomWebApplicationFactory:WebApplicationFactory,其中TStartup:class
{
受保护的覆盖无效配置WebHost(IWebHostBuilder)
{
builder.ConfigureServices(服务=>
{
var sp=services.BuildServiceProvider();
使用(var scope=sp.CreateScope())
{
var scopedServices=scope.ServiceProvider;
var dbUser=scopedServices.GetRequiredService();
var dbRefresh=scopedServices.GetRequiredService();
dbRefresh.Database.recreated();
dbUser.Database.recreated();
}
});
}
}
这是我的WebApplicationFactory,由测试调用。
问题只发生在CI上,docker上创建了一个新的SQL Server,并且只添加了“dbRefresh”表。“dbUser”表无符号或错误。
它不在那里,只有在测试命中时才会断开。
两个
DbContext
在测试中使用相同的连接字符串。

“两个DbContext在测试中使用相同的连接字符串。”


数据库名称在连接字符串中。

是的,我不能对这两个数据库使用相同的数据库名称吗?哦,重新创建的数据库是针对整个数据库,而不仅仅是表。是的。如果有多个DbContext共享一个数据库,则应创建一个uber DbContext以用于数据库创建/迁移。