Open MaceWindu opened 3 hours ago
Reproduced.
Note use of UseNodaTime
option. Without it it works fine.
This is actually a workaround for another issue in v8 we hit and I didn't reported yet: only one of test contexts need nodatime integration, but starting from v8 release it UseNodaTime
was ignored if not called on first UseNpgsql
call in tests (3.1 and 6 versions respected this call for specific context)
using Microsoft.EntityFrameworkCore;
internal class Program
{
private static void Main(string[] args)
{
var connectionString = "<connection_string_here>";
for (var i = 0; i < 2; i++)
{
var optionsBuilder = new DbContextOptionsBuilder<TestContext>();
optionsBuilder.UseNpgsql(connectionString, o => o.UseNodaTime());
using (var ctx = new TestContext(optionsBuilder.Options))
{
ctx.Database.EnsureDeleted();
ctx.Database.EnsureCreated();
}
}
}
}
public class TestTable
{
public int Id { get; set; }
}
public sealed class TestContext(DbContextOptions options) : DbContext(options)
{
public DbSet<TestTable> Test { get; set; } = null!;
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<TestTable>();
}
}
We have a set of tests that use different contexts with following setup:
This works fine for different db providers (we test sqlite, sqlserver, mysql and npgsql) and versions (3.1, 6, 8). But in v9 now it fails to create database for Npgsql on second call to snippet above. Basically only 1 context being initialized per test run, second initialization fails with:
Currently looking into providing isolated repro code