public static T CreateInMemoryEFContext <T>(Func <EFContextOptions, T> efContectFactory, Guid?systemUserId = null) where T : EFContext { var modelBuilder = new ModelBuilder(new Microsoft.EntityFrameworkCore.Metadata.Conventions.ConventionSet()); EFContext.FixSnakeCaseNames(modelBuilder); EFMappings.DefineMappings(modelBuilder); var dbContextOptions = new DbContextOptionsBuilder <T>() .UseInMemoryDatabase("costs") .UseModel(modelBuilder.Model) .ConfigureWarnings(wcb => wcb.Ignore(InMemoryEventId.TransactionIgnoredWarning)) .Options; var efContextOptions = new EFContextOptions { DbContextOptions = dbContextOptions, SystemUserId = systemUserId ?? Guid.Empty }; return(efContectFactory(efContextOptions)); }